HDU 4036 存疑题目,数论 难度:1

http://acm.hdu.edu.cn/showproblem.php?pid=4036

一开始以为需要用斜抛,结果发现只需要用能量守恒定律?+与最大速度的坏土豆速度保持一致

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn=1e3+3;
int n,m;
double w;
double x[maxn],y[maxn];
struct pt{
    double p,v,m;
}b[maxn];
void input(){
    scanf("%d%d%lf",&n,&m,&w);
    for(int i=0;i<n;i++)scanf("%lf%lf",x+i,y+i);
    for(int i=0;i<m;i++)scanf("%lf%lf%lf",&b[i].p,&b[i].v,&b[i].m);
    for(int i=0;i<m;i++)b[i].p+=x[0];
    for(int i=n-1;i>=0;i--)y[i]-=y[0];
}
double calc(){
    double ans=0;
    for(int i=0;i<n;i++){
        if(y[i]>0)ans=max(ans,sqrt(40*y[i]));
    }
    for(int i=0;i<m;i++){
        for(int j=0;j<n-1;j++){
            if(x[j]<=b[i].p&&x[j+1]>=b[i].p){
                double h=(y[j+1]-y[j])/(x[j+1]-x[j])*(b[i].p-x[j])+y[j];
                ans=max(ans,sqrt(40*h+b[i].v*b[i].v));
                break;
            }
        }
    }
    return ans;
}
int main()
{
    int T;
    scanf("%d",&T);
    for(int ti=1;ti<=T;ti++){
        input();
        double ans=calc();
        printf("Case %d: %.2f\n",ti,ans);
    }
    return 0;
}
时间: 2024-11-03 19:47:43

HDU 4036 存疑题目,数论 难度:1的相关文章

HDU 4861 Couple doubi(数论)

HDU 4861 Couple doubi 题目链接 题意:给定k,p,有k个球,每个球的值为1^i+2^i+...+(p-1)^i (mod p) (1 <= i <= k),现在两人轮流取球,最后球的值总和大的人赢,问先手是否能赢 思路:先手不可能输,非赢即平,那么只要考虑每种球的值, 利用费马小定理或欧拉定理,很容易得到该函数的循环节为p - 1, 那么i如果为p - 1的倍数,即为循环节的位置,那么每个值都为1,总和为p - 1 如果i不在循环节的位置,任取一个原根g,根据原根的性质,

HDU 3049 Data Processing 数论题解

Problem Description Chinachen is a football fanatic, and his favorite football club is Juventus fc. In order to buy a ticket of Juv, he finds a part-time job in Professor Qu's lab. And now, Chinachen have received an arduous task--Data Processing. Th

HDU 4937 Lucky Number(数论)

HDU 4937 Lucky Number 题目链接 题意:给定一个数字,求它再x进制下,每位进制位上都只有3,4,5,6,求这样的x有多少种,如果无限种输出-1 思路:首先3 4 5 6特判掉是无限的,很容易想到就不证明了,然后就是枚举数字的最后一位3,4,5,6,然后进制数肯定来自这个数字的因子,因为剩下的数字肯定是a1x^1 + a2x^2 + a3x^3...这样的,这样只要在因子中找进制,去判断即可.找因子的方法用先分解再dfs找,直接试除会超时 代码: #include <cstdi

HDU 1695 GCD (数论-整数和素数,组合数学-容斥原理)

GCD Problem Description Given 5 integers: a, b, c, d, k, you're to find x in a...b, y in c...d that GCD(x, y) = k. GCD(x, y) means the greatest common divisor of x and y. Since the number of choices may be very large, you're only required to output t

题库类产品如何计算题目的难度值

一.引言 题库类产品(如猿题库.易题库等)的一个标配功能是预测用户未来要进行的某项考试得分,我们称之为目标考试预测分.以猿题库高考为例,即将参加高考的学生通过在题库上做大量练习,练习的效果会以学生的高考预测分呈现出来,这是学生最关注的指标,也是整个题库产品中最关键的数据.为了让“预测分”数据更加准确,我们引入了能力评估模型,通过测算用户在所有知识点上的能力水平,并将其量化成为一个数值.能力评估模型中有两个重要参数:题目难度值.用户答题的正确率.简化为:A=f(an,d)其中A表示能力值,an表示

HDU 4951 Multiplication table 数论

Problem Description Teacher Mai has a multiplication table in base p. For example, the following is a multiplication table in base 4: * 0 1 2 3 0 00 00 00 00 1 00 01 02 03 2 00 02 10 12 3 00 03 12 21 But a naughty kid maps numbers 0..p-1 into another

hdu模版水题目2896

没啥好说的.代码注释,可以秒懂 //照打的.跟模板的差别是引入了used数组和一个flag标记 #include <cstdio> #include <cstring> #include <queue> using namespace std; const int maxn = 510*200; int ch[maxn][128],fail[maxn],end[maxn]; int root,sz,cnt; char str[10010]; bool used[510]

HDU 1005 Number Sequence(数论)

HDU 1005 Number Sequence(数论) Problem Description: A number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n). Input The input consists of multiple

HDU 1560 DNA sequence A* 难度:1

http://acm.hdu.edu.cn/showproblem.php?pid=1560 仔细读题(!),则可发现这道题要求的是一个最短的字符串,该字符串的不连续子序列中包含题目所给的所有字符串 因为总共只有40个字符,可以尝试使用A*搜索 1.存储状态时直接存储40个字符,每个字符4种可能是肯定不行的. 因为要求的是包含不连续的子序列,所以只需记住当前字符串长度与每个子序列已经包含在当前字符串的长度, 比如题目中的输入样例 4 ACGT ATGC CGTT CAGT 可以这样存储一个序列