hdu 2059 龟兔赛跑【动态规划】
来源:互联网 发布:审批工作流数据库设计 编辑:程序博客网 时间:2024/05/18 01:05
解题思路:
不妨把起点和终点都看做一个充电站。
设dp[i]是到第i个加油站所用最短时间。
则:dp[i]=min(dp[j]+t0,dp[j]+t1),0
其中t0是不充电(全用脚蹬)从p[j]到p[i]所用时间,t1是充电从p[j]到p[i]所用时间。
为何没考虑从j不充电开始但还有剩余电量的情况呢?因为它可以看成从更前面一点充电开始所用时。
时间复杂度为O(
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<algorithm>#include<cmath>#include<queue>#include<vector>#define ll long longusing namespace std;int getint() { int i=0,f=1;char c; for(c=getchar();(c<'0'||c>'9')&&c!='-';c=getchar()); if(c=='-')c=getchar(),f=-1; for(;c>='0'&&c<='9';c=getchar())i=(i<<3)+(i<<1)+c-'0'; return i*f;}const int N=105;int L,n,c,t,vr,vt1,vt2,p[N];double tr,dp[N];int main(){ //freopen("lx.in","r",stdin); while(scanf("%d",&L)!=EOF) { scanf("%d%d%d%d%d%d",&n,&c,&t,&vr,&vt1,&vt2); tr=L*1.0/vr; for(int i=1;i<=n;i++)scanf("%d",&p[i]); p[0]=0;p[n+1]=L; n++;dp[0]=0; for(int i=1;i<=n;i++)dp[i]=1e9; for(int i=1;i<=n;i++) { for(int j=0;j<i;j++) { int dis=p[i]-p[j]; double t0=dp[j]+dis*1.0/vt2,t1; if(c<dis)t1=dp[j]+c*1.0/vt1+(dis-c)*1.0/vt2; else t1=dp[j]+dis*1.0/vt1; if(j)t1+=t; dp[i]=min(dp[i],min(t0,t1)); } } tr<dp[n]?puts("Good job,rabbit!"):puts("What a pity rabbit!"); }}
阅读全文
0 0
- 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----龟兔赛跑
- IO系统
- 要啃硬骨头
- java source not found
- 《maven实战》学习笔记1——maven是什么?为什么要用maven?
- django的403/404/500错误自定义页面的配置
- hdu 2059 龟兔赛跑【动态规划】
- bzoj1049 [HAOI2006]数字序列
- ource [sqlMapConfig.xml] cannot be opened because it does not exist
- 8.4桶排序
- vue2+axios 增删改查
- Linux 根目录介绍
- 浅谈小程序
- Android点击事件分发
- 496. Next Greater Element I