HDU 2059 龟兔赛跑
来源:互联网 发布:淘宝搜索店铺名找不到 编辑:程序博客网 时间:2024/05/16 18:46
这个dp 实在是秒。 起初自己的设想是 d【i】 来表示 达到某一个点时的最短距离。 但是这样太麻烦。 实现太不容易。
后来去百度了一下题解。 看了大神的思路。 对于每一个充电站 假设他之前的某一个充电站是最后一个充电站。 那么就可以得出 到此时位置的最少时间了。
我们假设终点站处也是充电站,那么 就有 n+1个充电站。 那么状态转移方程就很好写了。
#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>#include <cmath>#include <cstdlib>#include <string>#include <map>#include <vector>#include <set>#include <queue>#include <stack>#include <cctype>using namespace std;typedef long long LL;typedef unsigned long long ULL;#define MAXN 30000+10#define INF (1<<30)#define mod 123456789int main (){ int l; while(scanf("%d",&l) != EOF){ int n;double c,t; // 充电个数,满电距离,每次充电时间 scanf("%d%lf%lf",&n,&c,&t); double vr,vt1,vt2; // 兔子速度,乌龟开车速度,步行速度。 scanf("%lf%lf%lf",&vr,&vt1,&vt2); int wh[MAXN] = {0}; for(int i = 1; i <= n; i++){ scanf("%d",&wh[i]); } double tr = l/vr; double d[MAXN] = {0}; for(int i = 0; i <= n+1; i++){ d[i] = INF; } d[0] = 0;wh[n+1] = l; for(int i = 1; i <= n+1; i++){ for(int j = 0; j < i; j++){ if(wh[i]-wh[j] > c){ if(j == 0) d[i] = min(d[i], d[j]+c*1.0/vt1+(wh[i]-wh[j]-c)*1.0/vt2); else d[i] = min(d[i], d[j]+c*1.0/vt1+(wh[i]-wh[j]-c)*1.0/vt2+t); } else{ if(j == 0) d[i] = min(d[i], d[j]+(wh[i]-wh[j])*1.0/vt1); else d[i] = min(d[i], d[j]+(wh[i]-wh[j])*1.0/vt1+t); } } //printf("%d %lf\n",i,d[i]); } // printf("%lf %lf\n",d[n+1],tr); if(d[n+1] > tr) printf("Good job,rabbit!\n"); else printf("What a pity rabbit!\n"); } return 0;}
0 0
- hdu 2059 龟兔赛跑
- HDU 2059 - 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- hdu 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- HDU 2059 龟兔赛跑
- 阿里公司将推出债卷,数字巨大
- OC学习总结之延展类目协议
- Apple Watch人机交互指南:UI设计基础--通知
- netty客户端异步获取数据
- Linux——网络配置相关命令
- HDU 2059 龟兔赛跑
- 【随手写】JS过滤所有script正则
- android Eclipse插件下载sdk代理
- hibernage 报不能转换成 对象
- 关于Zernike矩
- Insertion Sort List(leetcode)
- MyEclipse基本设置
- android 常用的命令和工具
- android binder - 客户端(java层) 调用 服务端(c++层) 例子