HDU 2059 龟兔赛跑
受上一道题影响,我本来想着开一个二维数组来表示充电和不充电的状态。
可这样就有一个问题,如果没有充电,那么在下一个阶段就有剩余的电量。
这样问题貌似就不可解了,难道是因为不满足动态规划的无后效性这一条件?
这里先打个问号。
所以这题还是看的别人的思路。
将起点和终点划分到N个加电站中去
这样一共有N+2点,用DP[i]表示到第i个加电站的最小耗费时间
那么在求DP[i]的时候,DP[0]...DP[i-1]已经求得
让j从0遍历到i-1,每一个j表示最后一次充电到i点
那么状态转移方程为
DP[i] = min(DP[j] + t(j, i)) //t(j, i)表示从j充完电一直到i点(中途没有充过电)
//#define LOCAL
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; double p[];
double dp[]; int main(void)
{
#ifdef LOCAL
freopen("2059in.txt", "r", stdin);
#endif
int l;
while(scanf("%d", &l) != EOF)
{
int i, j;
int n, c, t;
double vr, vt1, vt2;
double temp;
memset(dp, , sizeof(dp));
memset(p, , sizeof(p)); scanf("%d%d%d", &n, &c, &t);
scanf("%lf%lf%lf", &vr, &vt1, &vt2);
for(i = ; i <= n; ++i)
{
scanf("%lf", &p[i]);
}
p[] = ;
p[n + ] = l;
dp[] = ; for(i = ; i <= n + ; ++i)
{
dp[i] = ;
for(j = ; j < i; ++j)
{
double lenth = p[i] - p[j];
if(c >= lenth)
temp = dp[j] + lenth / vt1;
else
temp = dp[j] + c / vt1 + (lenth - c) / vt2;
if(j > )
temp += t;
if(temp < dp[i])
dp[i] = temp;
}
} if(dp[n + ] < (l / vr))
printf("What a pity rabbit!\n");
else
printf("Good job,rabbit!\n");
}
return ;
}
代码君
HDU 2059 龟兔赛跑的更多相关文章
- hdu 2059 龟兔赛跑(动态规划DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) M ...
- HDU 2059 龟兔赛跑(动态规划)
龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 2059 龟兔赛跑(dp)
龟兔赛跑 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ...
- HDU 2059 龟兔赛跑(超级经典的线性DP,找合适的j,使得每个i的状态都是最好的)
龟兔赛跑 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- hdu 2059:龟兔赛跑(动态规划 DP)
龟兔赛跑 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Submissi ...
- 题解报告:hdu 2059 龟兔赛跑
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击—— ...
- HDU - 2059 龟兔赛跑(多阶段决策dp)
http://acm.hdu.edu.cn/showproblem.php?pid=2059 初始把起点和终点也算做充电站,设dp[i]是到第i个充电站的最短时间,那么dp[n+1]即是乌龟到达终点的 ...
- HDU 2059 龟兔赛跑 (dp)
题目链接 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击--赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ...
- hdu 2059龟兔赛跑("01"背包)
传送门 https://www.cnblogs.com/violet-acmer/p/9852294.html 题解: 看到这个题,第一反应就是DP,因为对于每个充电站,都有两种选择,充电或不充电,和 ...
随机推荐
- MySQL注入load_file常用路径
WINDOWS下: c:/boot.ini //查看系统版本 c:/windows/php.ini //php配置信息 c:/windows/my.ini //MYSQL配置文件,记录管理员登陆过的M ...
- POJ 2484
A Funny Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3861 Accepted: 2311 Desc ...
- POJ 2135
Farm Tour Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10840 Accepted: 4011 Descri ...
- C# WINFORM 捕获全局异常
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Thr ...
- java获取系统当前时间
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式 System.out.print(df. ...
- JSTL Tag学习笔记(二)之<fmt: />
JSTL的formatting tags可以用来格式化和显示文本.日期.时间.数字.如果在JSP页面中要用到该库提供的tag的话,需要引入如下taglib: <%@ taglib prefix= ...
- STL中set底层实现方式
Q:STL中set底层实现方式? 为什么不用hash? A: 第一个问题:set底层实现方式为RB树(即红黑树). 第二个问题: 首先set,不像map那样是key-value对,它的key与valu ...
- Grub命令行
今天电脑无缘无故无法正常启动,只提示 GRUB> 看来是GRUB引导出问题了,要解决下. 先 想到用制作U盘启动盘来启动,参照网上的方法,很简单用USBBOOT软件做了一个U盘启动盘,按F11在 ...
- VS2008 引用程序集 没有强名称 解决办法
为项目添加强名称方法:1.右键单击项目,打开属性窗口;2.在属性窗口里选择<签名>标签,选中为程序集签名的选项,在下拉列表里选择新建 3.打开新建签名窗口,输入签名的名称密码等内容 单击确 ...
- Fatal error: cannot allocate memory for the buffer pool
mysql有时候会被系统kill掉,原因是内存不够了,一般都是Ubuntu出现的,因为Ubuntu吃内存,你们又给的不多.. 咋解决呢? 重启服务器是可以的,起码暂时可以了, 可以考虑加内存,或者增加 ...