hdu 2059 龟兔赛跑(DP)
来源:互联网 发布:linux 启动网络服务 编辑:程序博客网 时间:2024/05/20 05:45
思路:用dp[i][0]表示到第i个加油站不加油所用的最小时间,dp[i][1]表示到第i个加油站加油所用的最小时间。将终点设为第n+1个站,则答案为dp[n+1][0].具体细节看代码。
#include<cstdio>#include<cmath>#include<cstring>#include<iostream>using namespace std;typedef long long LL;const LL INF = 100000000000;const double EPS = 1e-9;int a[110];double dp[110][2];int dcmp(double x, double y){ if(fabs(x - y) < EPS) return 0; return x > y ? 1 : -1;}int main(){ int l, n, c, t; int vr, vt1, vt2; while(scanf("%d", &l) == 1){ scanf("%d%d%d%d%d%d", &n, &c, &t, &vr, &vt1, &vt2); for(int i = 1; i <= n; ++i) scanf("%d", &a[i]); memset(dp, 0, sizeof dp); a[0] = 0, a[n + 1] = l; for(int i = 1; i <= n + 1; ++i){ dp[i][0] = dp[i][1] = INF; for(int j = 0; j < i; ++j){ int d = a[i] - a[j]; dp[i][0] = min(dp[i][0], dp[j][0] + (double)d / vt2); if(d > c) dp[i][0] = min(dp[i][0], dp[j][1] + (double)c / vt1 + (double)(d - c) / vt2); else dp[i][0] = min(dp[i][0], dp[j][1] + (double)d / vt1); dp[i][1] = min(dp[i][1], dp[j][0] + (double)d / vt2 + t); if(d > c) dp[i][1] = min(dp[i][1], dp[j][1] + (double)c / vt1 + (double)(d - c) / vt2 + t); else dp[i][1] = min(dp[i][1], dp[j][1] + (double)d / vt1 + t); } } double t1 = (double)l / vr, t2; if(t1 > dp[n + 1][0]) printf("What a pity rabbit!\n"); else printf("Good job,rabbit!\n"); }}
阅读全文
1 0
- hdu 2059 龟兔赛跑 (DP)
- HDU 2059 龟兔赛跑 (DP)
- hdu 2059 龟兔赛跑 (dp)
- HDU 2059 龟兔赛跑(DP)
- hdu 2059(龟兔赛跑 dp)
- HDU 2059 龟兔赛跑(DP)
- hdu 2059 龟兔赛跑(DP)
- hdu 2059龟兔赛跑(DP)
- HDU 2059 龟兔赛跑(dp)
- hdu 2059 龟兔赛跑(DP)
- HDU 2059 龟兔赛跑 (DP)
- HDU-2059 龟兔赛跑(DP)
- HDU 2059 龟兔赛跑(dp)
- hdu 2059 龟兔赛跑(dp)
- HDU 2059 龟兔赛跑(dp)
- HDU 2059 龟兔赛跑(DP)
- HDU 2059 龟兔赛跑 (DP)
- HDU-2059-龟兔赛跑(DP)
- lens shading correction
- 5.31项目随笔
- 的maven pom.xml文件教程详解
- 给初学者的RxJava2.0教程(一)
- Educational Codeforces Round 20
- hdu 2059 龟兔赛跑(DP)
- caffe学习之Lenet-5详解
- grep 排除一些目录
- jquery开发:jquery插件编写类型
- English Oppens The New World
- gcc执行的过程
- Struts2-入门案例
- BZOJ1040
- codevs 1436 孪生素数 2