【hdu5515】【2015ACM/ICPC亚洲区沈阳站】 Game of Flying Circus 题意&题解&代码(C++)

题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=5515
题意:
不得不说,这题意很扯,不过还是有好心人将题意写的很清楚,我只想说阅读理解满分。
题意&题解传送门:
http://blog.csdn.net/snowy_smile/article/details/49535301
代码:

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<math.h>
using namespace std;
int stest;
double T,v1,v2;
const double len=300.0;
int main()
{
    scanf("%d",&stest);
    for (int t=1;t<=stest;t++)
    {
        cin>>T>>v1>>v2;
        if (v1==v2)
        {
            printf("Case #%d: Yes\n",t);
            continue;
        }
        double gen2=sqrt(2.0);
        double len2=len*len;
        if ((len*gen2/v1)<=(len*2.0/v2))
        {
            double l=0.0;
            double r=len;
            while(r-l>0.0000001)
            {
                double mid=(l+r)/2.0;
                double s1=sqrt(mid*mid+len2);
                double s2=mid+len;
                if ((s1/v1)<=(s2/v2))
                r=mid;
                else
                l=mid;
            }
            double t1,t2;
            t1=sqrt(r*r+len2)/v1+(r+2*len)/v1;
            t2=T+(3*len)/v2;
            if (t1<=t2) printf("Case #%d: Yes\n",t);
            else printf("Case #%d: No\n",t);
        }
        else if ((len/v1)<((3*len)/v2))
        {
                        double l=0.0;
                        double r=len;
                        while(r-l>0.0000001)
                        {
                                double mid=(l+r)/2.0;
                                double s1=sqrt(mid*mid+len2);
                                double s2=3*len-mid;
                                if ((s1/v1)<=(s2/v2))
                                l=mid;
                                else
                                r=mid;
                        }
                        double t1,t2;
            double stmp=sqrt((len-r)*(len-r)+len2);
                        t1=sqrt(l*l+len2)/v1+stmp/v1+(3*len)/v1;
                        t2=T+(4*len)/v2;
                        if (t1<=t2) printf("Case #%d: Yes\n",t);
                        else printf("Case #%d: No\n",t);            
        }
        else printf("Case #%d: No\n",t);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值