杭电2059

 1 //动态规划思路
 2 #include<stdio.h>
 3 int a[150];
 4 double dp[150]={0};
 5 int main()
 6 {
 7     double min(double x,double y);
 8     int len,n,maxlen,i,j,lenth;
 9     double time,vmax,vmin,vr,t;
10     while(~scanf("%d%d%d%lf%lf%lf%lf",&len,&n,&maxlen,&time,&vr,&vmax,&vmin))
11     {
12         a[0]=0; a[n+1]=len;
13         for(i=1; i<n+1; ++i)
14             scanf("%d",&a[i]);
15         for(i=1; i<=n+1; ++i)
16         {
17             dp[i]=len/vmin+1;//保证够大才能比较出最小值
18             for(j=0; j<i; ++j)
19             {
20                 lenth=a[i]-a[j];
21                 if(lenth>maxlen)
22                     t=maxlen/vmax+(lenth-maxlen)/vmin;
23                 else
24                     t=lenth/vmax;
25                 t+=dp[j];
26                 if(j)
27                     t+=time;
28                 dp[i]=min(dp[i],t);//计算i之前j发电站到i的时间最小值
29             }
30         }
31         if(dp[n+1]<len/vr)
32             printf("What a pity rabbit!\n");
33         else
34             printf("Good job,rabbit!\n");
35     }
36 }
37 
38 double min(double x,double y)
39 {
40     double z=x<y?x:y;
41     return z;
42 }

 

posted @ 2016-11-16 14:39  Posase  阅读(202)  评论(0编辑  收藏  举报