hdu 2059 龟兔赛跑 动态规划
来源:互联网 发布:java socket 语音聊天 编辑:程序博客网 时间:2024/05/16 15:03
hdu 2059龟兔赛跑
终于过了 ~ 不容易啊
第一次方法错了,,然后很无奈的上网看了思路 ,我发誓在看见动态规划四个字之后就把网页关掉了 然后自己写。。
第一次的代码:
//hdu2059 龟兔赛跑 //方法错 #include<stdio.h>int P[101]={0};int flag[101];main(){int i,j,L,N,C,T,Vr,V1,V2;int x; //while(scanf("%d",&L)!=EOF){scanf("%d%d%d%d%d%d",&N,&C,&T,&Vr,&V1,&V2);for(i=1;i<=N;i++) scanf("%d",&P[i]);P[0]=0,P[i]=L;x=(T*V1*V2)/(V1-V2);flag[0]=0;for(j=i=1;i<=N;i++){if(P[i]-flag[j-1]<=x) continue;if(P[i]+C>=P[i]-x) continue;flag[j++]=P[i];}j--;if(flag[j]+x>=L) flag[j]=L;else{j++;flag[j]=L;}printf("x=%d\n",x);for(i=1;i<=j;i++) printf("%d ",flag[i]);printf("\n");float tt=(j-1)*T;printf("加油时间共%f\n",tt);for(i=1;i<=j;i++){tt+=x/V1;tt+=(flag[i]-flag[i-1]-x)/V2;printf("%d~%d~%d ",flag[i-1],flag[i-1]+x,flag[i]);printf("%f %f\n",(float)x/V1,(float)(flag[i]-flag[i-1]-x)/V2);}printf("tt=%f\n",tt);if(tt<L/Vr)printf("What a pity rabbit!\n");elseprintf("Good job,rabbit!\n");}}
然后是动态规划
#include<stdio.h>#include<string.h>#include<stdlib.h>#define min(x,y) ((x>y)?y:x)int main(){int L,N,C,T,Vr,V1,V2,P[101];int i,j;float time,Min,dp[101];while(scanf("%d",&L)!=EOF){scanf("%d%d%d%d%d%d",&N,&C,&T,&Vr,&V1,&V2);for(i=1;i<=N;i++) scanf("%d",&P[i]);P[0]=0,P[i]=L;for(i=1;i<=N+1;i++) dp[i]=100000000.0;for(i=1;i<=N+1;i++){for(j=0;j<=i-1;j++){if(P[i]-P[j]<=C) time=T+(P[i]-P[j])/V1;else time=T+C/V1+(P[i]-P[j]-C)/V2;if(j==0) time-=T;Min=dp[j]+ min( time , (P[i]-P[j])/V2 );//printf("%d %d Min=%.2f \n",i,j,Min); if( dp[i]> Min) dp[i]=Min; }printf(" dp[%d]=%.2f\n",i,dp[i]);}//printf("~%.2f %.2f\n",dp[N+1],L/Vr*1.0);if(dp[N+1]<L/Vr*1.0)printf("What a pity rabbit!\n");elseprintf("Good job,rabbit!\n");}return 0;}
这个还是是错误的代码
因为把速度,距离等应为浮点型的变量写成了整型 ,
#include<stdio.h>#include<string.h>#include<stdlib.h>#define min(x,y) ((x>y)?y:x)int main(){//int L,N,C,T,Vr,V1,V2,P[101];int i,j,N;float time,Min,dp[101],L,C,T,Vr,V1,V2,P[101];while(scanf("%f",&L)!=EOF){scanf("%d%f%f%f%f%f",&N,&C,&T,&Vr,&V1,&V2);for(i=1;i<=N;i++) scanf("%f",&P[i]);P[0]=0;P[i]=L;for(i=1;i<=N+1;i++) dp[i]=100000000.0;dp[0]=0;for(i=1;i<=N+1;i++){for(j=0;j<=i-1;j++){if(P[i]-P[j]<=C) time=T+(P[i]-P[j])/V1;else time=T+C/V1+(P[i]-P[j]-C)/V2;//printf("P[i]=%.2f P[j]=%.2f time=%.2f\n",P[i],P[j],time);if(j==0) time-=T;Min=dp[j]+ min( time , (P[i]-P[j])/V2 );//printf("time=%.2f dp[j]=%.2f %d~%d Min=%.2f \n",time,dp[j],j,i,Min); if( dp[i]> Min) dp[i]=Min; }//printf(" dp[%d]=%.2f\n",i,dp[i]);}//printf("~%.2f %.2f\n",dp[N+1],L/Vr*1.0);if(dp[N+1]<L/Vr*1.0)printf("What a pity rabbit!\n");elseprintf("Good job,rabbit!\n");}return 0;}
ac……
- hdu 2059 龟兔赛跑 动态规划
- HDU 2059 - 龟兔赛跑(动态规划)
- hdu 2059 龟兔赛跑【动态规划】
- 杭电hdu 2059 龟兔赛跑 动态规划
- HDU 2059 龟兔赛跑(动态规划)
- HDU 2059 龟兔赛跑 (动态规划分析)
- HDU ACM 2059 龟兔赛跑->动态规划
- hdu 2059 龟兔赛跑(动态规划DP)
- HDU:2059 龟兔赛跑(经典动态规划DP)
- HDU ACM 11 2059 龟兔赛跑(动态规划)
- 动态规划-龟兔赛跑
- HDOJ 题目2059 龟兔赛跑(动态规划)
- HDOJ 题目2059 龟兔赛跑(动态规划)
- 【杭电oj】2059 - 龟兔赛跑(动态规划)
- 动态规划 - hdu2059 - 龟兔赛跑
- Hdu2059— 龟兔赛跑 动态规划
- HDU2059 龟兔赛跑 动态规划 DP
- 动态规划基础-----HDOJ2059----龟兔赛跑
- 杂记连载之20120725
- 虚电路和数据报的区别以及应用
- windows程序及MFC简介
- CDlinux下安装驱动使用make命令command not found
- 2012-07-25
- hdu 2059 龟兔赛跑 动态规划
- zend framework 多模块 多模板配置
- 不能说のsecret 6
- Artificial Intelligence? 编码好题!
- JS动态加载JS
- const的利与弊
- keycode和ascii
- 浙大1755
- 多库俄罗斯方块之九(Python)