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)的更多相关文章

  1. hdu 2059 龟兔赛跑(动态规划DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    M ...

  2. hdu 2059 龟兔赛跑(dp)

    龟兔赛跑 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ...

  3. HDU 2059 龟兔赛跑 (dp)

    题目链接 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击--赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ...

  4. HDU 2059 龟兔赛跑(超级经典的线性DP,找合适的j,使得每个i的状态都是最好的)

    龟兔赛跑 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  5. hdu 2059:龟兔赛跑(动态规划 DP)

    龟兔赛跑 Time Limit : 1000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submissi ...

  6. hdu 2059 龟兔赛跑 (dp)

    /* 把起点和终点比作加油站,那总共同拥有n+2个加油站了, 每次都求出从第0个到第j个加油站(j<i)分别在加满油的情况下到第i个加油站的最短时间dp[i], 终于的dp[n+1]就是最优解了 ...

  7. HDU 2059 龟兔赛跑(动态规划)

    龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  8. 题解报告:hdu 2059 龟兔赛跑

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2059 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击—— ...

  9. HDU 2059 龟兔赛跑

    受上一道题影响,我本来想着开一个二维数组来表示充电和不充电的状态. 可这样就有一个问题,如果没有充电,那么在下一个阶段就有剩余的电量. 这样问题貌似就不可解了,难道是因为不满足动态规划的无后效性这一条 ...

随机推荐

  1. [转]在ASP.NET MVC3中使用EFCodeFirst 1.0

    本文转自:http://kb.cnblogs.com/page/97003/ 作者: NinoFocus  来源: 博客园  发布时间: 2011-04-12 10:41  阅读: 11971 次   ...

  2. Oracle的一些名词和概念

    1.数据库 这里的数据库不是通常情况下我们所说的数据库,而是一个Oracle的专业名词.它是磁盘上存储数据的集合,在物理上表现为数据文件. 日志文件和控制文件等,在逻辑上以表空间形式存在.使用时,必须 ...

  3. java课程设计全程实录——第1天

    反思,总结昨天: IDE搭建完成: git远程配置失败,处理方式:放弃使用git 主要参考<疯狂java实战演义>中的图书进销存管理系统.但该项目是MySQL,无法直接套用,因为我们学的是 ...

  4. Objective-C Foundation 框架 Example :Looking for Files 查找文件

    Objective-C Foundation 框架    Example :Looking for Files  查找文件 NSFileManager. The NSFileManager class ...

  5. 解决max解析记录与cname不能共存的问题

    问题描述: 在腾讯上做了域名邮箱解析,需要将max记录绑定到主机记录为@(即空)的记录下. 而在做域名解析的时候,为了方便,需要将不带3w的域名也要解析到主机记录为@(即空)的记录下. 因此,解析报错 ...

  6. [Windows Server 2008] 搭建数据云备份

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com ★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频. ★ 本节我们将带领大家:如何搭建数 ...

  7. Vuex/Vue 练手项目 在线汇率转换器

    详情请点击: https://zhuanlan.zhihu.com/p/33362758

  8. 在Eclipse中用Maven打包jar包--完整版

    将本地的jar导入到maven本地库中 <!--手动加入库中 --><!-- mvn install:install-file -DgroupId=org.apache.Hadoop ...

  9. jquery 获取日期 date 对象、 判断闰年

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. C++运行外部exe并判断exe返回值

    有三个API函数可以运行可执行文件WinExec.ShellExecute和CreateProcess.CreateProcess因为使用复杂,比较少用. WinExec主要运行EXE文件. ⑴ 函数 ...