hdu 2059 DP
来源:互联网 发布:微信广告植入源码 php 编辑:程序博客网 时间:2024/06/05 02:06
dp[i][0] 表示第i站不充电,dp[i][1]表示第i站充电
状态转移方程:
dp[i][0] = MIN(dp[j][1]+在j充满电后跑到i的时间, dp[j][0]+在j没有充电跑到i的时间) i-1>=j>=0
dp[i][1] = dp[i][0] + 充电需要的时间
#include "stdio.h"#define MIN(a, b) ((a)<(b)?(a):(b))void main(){int l;int n, c, t;int vr, vt1, vt2;int cha[110];int i, j, dist;double dp[110][2], rabbit, tmp; //dp[i][0] 在第i个站不充电 dp[i][1] 在第i个站充电freopen("in.txt", "r", stdin);while(scanf("%d", &l)!=EOF){scanf("%d %d %d", &n, &c, &t);scanf("%d %d %d", &vr, &vt1, &vt2);for(i=1; i<=n; i++)scanf("%d", cha+i);cha[0] = 0; //起点cha[i++] = l; //把终点加上,这样就有了n+1个rabbit = l*1.0/vr; //兔子跑完所需时间dp[0][0] = dp[0][1] = 0;for(i=1; i<=n+1; i++){ //这里是到n+1,因为加上了终点dp[i][0] = rabbit;for(j=i-1; j>=0; j--){ //上次在第j个站充的电dist = cha[i]-cha[j];tmp = MIN((dp[j][1] + (dist>c ? ((dist-c)*1.0/vt2 + c*1.0/vt1) : (dist*1.0/vt1))), (dp[j][0]+ dist*1.0/vt2));dp[i][0] = MIN(dp[i][0], tmp);}if(dp[i][0]>=rabbit) break;dp[i][1] = dp[i][0] + t;}if(i<=n+1 || dp[n+1][0]>rabbit) printf("Good job,rabbit!\n");elseprintf("What a pity rabbit!\n");}}
- hdu 2059 DP
- hdu 2059 dp
- hdu 2059 简单dp
- hdu 2059(dp)
- hdu 2059 加油站(dp)
- hdu 2059 第一道DP
- HDU DP
- DP? HDU
- DP? HDU
- DP? HDU
- 【dp】HDU
- 【dp】HDU
- 【dp】 HDU
- DP? HDU
- hdu 2059 龟兔赛跑 (DP)
- HDU dp 2059 龟兔赛跑
- HDU 2059 龟兔赛跑 (DP)
- Dp+ hdu 龟兔赛跑 2059
- oracle 12541 错误的解决
- CSS3 background-size属性
- SQLite数据库种类
- Java基础回顾(一)
- VMWare虚拟机使用Bridge无法连接上物理路由器的DHCP
- hdu 2059 DP
- 诠释C指针操作
- Log4j指南
- jsp学习笔记
- 关于面试学习的一些memory
- queue
- 解决VS2008编译的程序在某些机器上运行提示“由于应用程序配置不正确,应用程序未能启动”的问题
- Android消息推送(一)--AndroidPn(XMPP协议)Demo版到正式上线
- system() exec() passthru()