HDU - 2059 龟兔赛跑(多阶段决策dp)
http://acm.hdu.edu.cn/showproblem.php?pid=2059
初始把起点和终点也算做充电站,设dp[i]是到第i个充电站的最短时间,那么dp[n+1]即是乌龟到达终点的最短时间.
每次到达第i个点,j:0-i-1;去找能不能用从第j个充电站直接到达 i 来更新最短时间。
注意细节处理.
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const double inf = 0xfffffff;
int N;
double L,C,T;
double vr,vt1,vt2;
double s[];
double dp[]; int main()
{
//freopen("a.txt","r",stdin);
while(~scanf("%lf",&L))
{
scanf("%d%lf%lf",&N,&C,&T);
scanf("%lf%lf%lf",&vr,&vt1,&vt2);
for(int i=;i<=N;i++)
scanf("%lf",&s[i]);
s[]=;s[N+]=L; //把起点和终点当成充电站,方便处理
dp[]=;//第0个充电站的最短距离为0
double m=;
for(int i=;i<=N+;i++)
{
dp[i]=inf; //初始为 无穷大
for(int j=;j<i;j++)
{
m=;
int x=s[i]-s[j];
if(x>C) //第i个充电站到第j个充电站的距离 > C
{ //把电动车行驶的时间加上乌龟用脚踏的时间
m=C/vt1+(x-C)/vt2;
}
else m=x/vt1;//直接加上这段距离除于电动车的速度所得的时间
if(j>)
{//这里判断j>0是因为如果j==0的话,即表明从起点出发,因为起点已经充满电了所以不需要加上电动车的充电时间
m+=T;
}
m+=dp[j];//之后加上到第j个加电站的最优时间
// printf("%.0lf\n",m);
dp[i]=min(m,dp[i]);
}
// printf("%.0lf\n",dp[i]);
}
if(dp[N+]>(L/vr)) printf("Good job,rabbit!\n");
else printf("What a pity rabbit!\n");
}
return ;
}
HDU - 2059 龟兔赛跑(多阶段决策dp)的更多相关文章
- hdu 2059 龟兔赛跑(动态规划DP)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) M ... 
- hdu 2059 龟兔赛跑(dp)
		龟兔赛跑 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ... 
- 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  龟兔赛跑 (dp)
		/* 把起点和终点比作加油站,那总共同拥有n+2个加油站了, 每次都求出从第0个到第j个加油站(j<i)分别在加满油的情况下到第i个加油站的最短时间dp[i], 终于的dp[n+1]就是最优解了 ... 
- HDU 2059 龟兔赛跑(动态规划)
		龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ... 
- 题解报告:hdu 2059 龟兔赛跑
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击—— ... 
- HDU 2059 龟兔赛跑
		受上一道题影响,我本来想着开一个二维数组来表示充电和不充电的状态. 可这样就有一个问题,如果没有充电,那么在下一个阶段就有剩余的电量. 这样问题貌似就不可解了,难道是因为不满足动态规划的无后效性这一条 ... 
随机推荐
- 工厂方法模式及php实现
			工厂方法模式: 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Facto ... 
- 开发小Tips
			Kotlin语言篇: 1.抽象类的定义 abstract class Person(var name : String, var age : Int) : Any() { abstract var a ... 
- R in action读书笔记(2)-第五章:高级数据管理(下)
			5.4 控制流  语句(statement)是一条单独的R语句或一组复合语句(包含在花括号{ } 中的一组R语 句,使用分号分隔):  条件(cond)是一条最终被解析为真(TRUE)或假(FAL ... 
- php判断是否引入某文件
			Code: /* 判断是否引入了公共文件demo.php */ $include_files = get_included_files(); $include_files_exist = 0 ; fo ... 
- 关于mapState和mapMutations和mapGetters 和mapActions辅助函数的用法及作用(二)-----mapMutations
			在组件中提交Mutations: import { mapState, mapMutations } from 'vuex' export default { data() { return { ms ... 
- [Windows Server 2008] 阿里云.云主机忘记密码解决方法
			★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:解决阿里云 ... 
- Windows之shortcut
			System key combinations CTRL+ESC: Open Start menu ALT+TAB: Switch between open programs ALT+F4: Quit ... 
- Android(java)学习笔记187:多媒体之SurfaceView
			1. SurfaceView: 完成单位时间内界面的快速切换(游戏界面流畅感). 我们之前知道一般的View,只能在主线程里面显示,主线程中更新UI.但是SurfaceView可以在子线程中里 ... 
- JDK1.8中的Stream详解
			Stream简介 Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念.它也不同于 StAX 对 XML ... 
- html 零散问题
			1.iconfont的使用 https://www.cnblogs.com/yujihang/p/6706056.html 2.阴影效果比较 box-shadow:0 0 6px #000 inset ... 
