A1065. 龟兔赛跑

题目http://www.tsinsen.com/A1065

有两个注意的地方:

1.由于浮点数的精度问题,比方说2是1.9999999999,1是0.99999999999,所以在速度倍数降低为0.1就不在下降了这一判断条件上,必须是part>0.2.如果这个不对,那么4,5,8,9,10会不ac

2.这是我的失误,没有想到有可能路程比较长,一段路程(比方水里)就跑了多个T。如果这个不对,4,5会不ac。

这道题核心是数学题,询问的也是奔跑的时间,兔子乌龟没有交互,如果对兔子乌龟有交互的感兴趣可以看:http://www.tsinsen.com/A1062,我虽然做了但是并没有拿出来写随笔。有需求的问我我在写吧。

#include <iostream>
#include <stdio.h>
using namespace std;
int n;
double T;
double a[5];
double b[5];

int main()
{
    cin>>n>>T;
    for(int i=1; i<=4; i++)
        cin>>a[i];
    for(int i=1; i<=4; i++)
        cin>>b[i];
//阶段,同一阶段同意速度
    double part=1,part2=1;
    double t1=0,t2=0;
    double leave1=0,leave2=0;
    for(int u=1; u<=n; u++)
    {
        int way;
        double dist1,dist2,dt1,dt2;
        cin>>way>>dist1;
        dist2=dist1;
//        dt1=dist1/(a[way]*part);
  //      dt2=dist2/(b[way]*part2);
       while(1){
          dt1=dist1/(a[way]*part);
        if((dt1+leave1)>=T)//能否在剩余的同一阶段时间内跑完
        {
            dist1=dist1-(T-leave1)*(a[way]*part);//下一阶段剩余的路程
            if(part>0.2)
            part=part-0.1;
            t1=t1+(T-leave1);//增加时间
            leave1=0;
        }
        else
        {
            t1=t1+dt1;
            leave1=leave1+dt1;
			break;
        }
		}
		while(1){
		    dt2=dist2/(b[way]*part2);
        if((dt2+leave2)>=T)//能否在剩余的同一阶段时间内跑完
        {
            dist2=dist2-(T-leave2)*(b[way]*part2);//下一阶段剩余的路程
            if(part2>0.2)
            part2=part2-0.1;
            t2=t2+(T-leave2);//增加时间
            leave2=0;
        }
        else
        {
            t2=t2+dt2;
            leave2=leave2+dt2;
			break;
        }
		}
    }
   // cout<<t1<<" "<<t2<<endl;
int u1=(t1+0.005)*100;
int u2=(t2+0.005)*100;
t1=u1*0.01;
t2=u2*0.01;
    if(t1>t2)
    {
        cout<<"R"<<endl;
        cout.precision(2);
        cout<<fixed<<t2;
    }
    else if(t1<t2)
    {
        cout<<"T"<<endl;
        cout.precision(2);
        cout<<fixed<<t1;
    }
    else
    {
        cout<<"D"<<endl;
        cout.precision(2);
        cout<<fixed<<t1;
    }
    return 0;
}

  

 

posted @ 2017-02-23 00:14  甜豆儿  阅读(280)  评论(0编辑  收藏  举报