zoukankan      html  css  js  c++  java
  • 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
    ",ti,ans);
        }
        return 0;
    }
    
  • 相关阅读:
    Java 正则表达式
    连续子数组最大和
    背包问题
    二叉树的数组存储
    各种鸟
    mac关闭和开启启动声
    关于栈和队列随想
    linux主机名 hostname
    mysql创建新用户并且授权远程访问
    关于linux的用户
  • 原文地址:https://www.cnblogs.com/xuesu/p/4502232.html
Copyright © 2011-2022 走看看