[acm]HDOJ 2059 龟兔赛跑

题目地址:

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

起点和终点,共n+2个点,n+2个状态,简单DP即可。


 1 //11512698    2014-08-21 17:11:55    Accepted    2059    
 2 //62MS    368K    969 B    G++    空信高手
 3 //起点和终点,共n+2个点,n+2个状态,简单DP即可
 4 #include<iostream>
 5 #include<cstdio>
 6 using namespace std;
 7 const int MAX=150;
 8 const double INF=0xfffff;
 9 double DP[MAX];
10 int s[MAX];
11 using namespace std;
12 double min(double t1,double t2)
13 {
14     return (t1<t2)?t1:t2;
15 }
16 int main()
17 {
18     freopen("input.txt","r",stdin);
19     int L;
20     int N,C,T;
21     int VR,VT1,VT2;
22     double Time;
23     while(cin>>L)
24     {
25         cin>>N>>C>>T>>VR>>VT1>>VT2;
26         for(int i=1;i<=N;i++)
27             cin>>s[i];
28         s[N+1]=L;
29         s[0]=0;
30         DP[0]=0;
31         for(int i=1;i<=N+1;i++)
32         {
33             DP[i] = INF;
34             for(int j=0;j<i;j++)
35             {
36                 int dis=s[i]-s[j];
37                 if(dis>C) Time=((double)C)/VT1+((double)(dis-C))/VT2;
38                 else Time=((double)dis)/VT1;
39                 Time+=DP[j];
40                 if(j>0)
41                     Time += T;
42                 DP[i]=min(DP[i],Time);
43             }
44         }
45         if(DP[N+1]<((double)L/VR))
46             cout<<"What a pity rabbit!"<<endl;
47         else
48             cout<<"Good job,rabbit!"<<endl;
49     }
50     return 0;
51 }

 

posted @ 2014-08-21 17:12  西芒xiaoP  阅读(493)  评论(0编辑  收藏  举报