Time Limit: 1000/1000 MS
(Java/Others) Memory Limit: 32768/32768 K
(Java/Others)
Total Submission(s): 10119 Accepted
Submission(s): 3818
1 #include<iostream> 2 #include<stdio.h> 3 #include<cstring> 4 #include<cstdlib> 5 using namespace std; 6 7 int a[110]; 8 double dp[110]; 9 double Min(double x,double y) 10 { 11 return x>y? y:x; 12 } 13 int main() 14 { 15 int N,C,T,VR,VT1,VT2,L; 16 int i,j,k; 17 double tmp; 18 while(scanf("%d",&L)>0) 19 { 20 scanf("%d%d%d",&N,&C,&T); 21 scanf("%d%d%d",&VR,&VT1,&VT2); 22 for(i=1;i<=N;i++) 23 scanf("%d",&a[i]); 24 N++; 25 a[N]=L; 26 dp[0]=0.0; 27 a[0]=0; 28 if(C>=a[1]) 29 dp[1]=a[1]*1.0/VT1; 30 else dp[1]=C*1.0/VT1+(a[1]-C)*1.0/VT2; 31 //不乘1.0就错。(⊙o⊙)… 32 for(i=2;i<=N;i++) 33 { 34 k=a[i]-a[i-1]; 35 if(C>=k) 36 dp[i]=dp[i-1]+T+(k*1.0)/VT1; 37 else dp[i]=dp[i-1]+T+C*1.0/VT1+(k-C)*1.0/VT2; 38 39 for(j=i-1;j>=0;j--) 40 { 41 k=a[i]-a[j]; 42 if(C>=k) 43 tmp=k*1.0/VT1+T; 44 else tmp=C*1.0/VT1+(k-C)*1.0/VT2+T; 45 if(j==0)tmp=tmp-T; 46 dp[i]=Min(dp[i],dp[j]+tmp); 47 } 48 // printf("%lf\n",dp[i]); 49 } 50 if(dp[N]<=(L*1.0/VR)) 51 printf("What a pity rabbit!\n"); 52 else printf("Good job,rabbit!\n"); 53 } 54 return 0; 55 }
原文:http://www.cnblogs.com/tom987690183/p/3590373.html