Problem Descrption

据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成了绝技,能够毫不休息得以恒定的速度(VR m/s)一直跑。兔子一直想找机会好好得教训一下乌龟,以雪前耻。
最近正值HDU举办50周年校庆,社会各大名流齐聚下沙,兔子也趁此机会向乌龟发起挑战。虽然乌龟深知获胜希望不大,不过迫于舆论压力,只能接受挑战。
比赛是设在一条笔直的道路上,长度为L米,规则很简单,谁先到达终点谁就算获胜。
无奈乌龟自从上次获胜以后,成了名龟,被一些八卦杂志称为“动物界的刘翔”,广告不断,手头也有了不少积蓄。为了能够再赢兔子,乌龟不惜花下血本买了最先进的武器——“"小飞鸽"牌电动车。这辆车在有电的情况下能够以VT1 m/s的速度“飞驰”,可惜电池容量有限,每次充满电最多只能行驶C米的距离,以后就只能用脚来蹬了,乌龟用脚蹬时的速度为VT2 m/s。更过分的是,乌龟竟然在跑道上修建了很多很多(N个)的供电站,供自己给电动车充电。其中,每次充电需要花费T秒钟的时间。当然,乌龟经过一个充电站的时候可以选择去或不去充电。
比赛马上开始了,兔子和带着充满电的电动车的乌龟并列站在起跑线上。你的任务就是写个程序,判断乌龟用最佳的方案进军时,能不能赢了一直以恒定速度奔跑的兔子。

Input

本题目包含多组测试,请处理到文件结束。每个测试包括四行:
第一行是一个整数L代表跑道的总长度
第二行包含三个整数N,C,T,分别表示充电站的个数,电动车冲满电以后能行驶的距离以及每次充电所需要的时间
第三行也是三个整数VR,VT1,VT2,分别表示兔子跑步的速度,乌龟开电动车的速度,乌龟脚蹬电动车的速度
第四行包含了N(N<=100)个整数p1,p2...pn,分别表示各个充电站离跑道起点的距离,其中0<p1<p2<...<pn<L
其中每个数都在32位整型范围之内。

Output

当乌龟有可能赢的时候输出一行 “What a pity rabbit!"。否则输出一行"Good job,rabbit!";
题目数据保证不会出现乌龟和兔子同时到达的情况。

Sample Input

100
3 20 5
5 8 2
10 40 60
100
3 60 5
5 8 2
10 40 60

Sample Output

Good job,rabbit!
What a pity rabbit!

问题连接:http://acm.hdu.edu.cn/showproblem.php?pid=2059

问题分析:首先找到递推公式,然后在乌龟每次到达充电站要判断是否充电

AC代码:

#include<iostream>
#include<algorithm>
using namespace std;#define INF 99999999
int main()
{int k;while(cin>>k)){int n,c,t;scanf("%d%d%d",&n,&c,&t);int vr,vt1,vt2;scanf("%d%d%d",&vr,&vt1,&vt2);int p[105]= {0};for(int i=1; i<=n; i++){scanf("%d",&p[i]);}double tr=l*1.0/vr;double dp[150];for(int i=1; i<150; i++){dp[i]=INF*2;}dp[0]=0;p[n+1]=l;for(int i=0; i<n+1; i++){for(int j=i+1; j<=n+1; j++){int x,y;if(c>p[j]-p[i]){x=p[j]-p[i];y=0;}else{x=c;y=p[j]-p[i]-c;}if(i==0)dp[j]=min(dp[j],dp[i]+x*1.0/vt1+y*1.0/vt2);elsedp[j]=min(dp[j],dp[i]+t+x*1.0/vt1+y*1.0/vt2);}}if(dp[n+1]<tr)puts("What a pity rabbit!");elseputs("Good job,rabbit!");}}

HDU2059(DP)相关推荐

  1. 求三角形最大面积(DP)

    求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...

  2. LeetCode 编辑距离 II(DP)

    1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...

  3. LeetCode 1220. 统计元音字母序列的数目(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...

  4. LeetCode 265. 粉刷房子 II(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...

  5. LeetCode 256. 粉刷房子(DP)

    文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...

  6. LeetCode 1223. 掷骰子模拟(DP)

    1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...

  7. LeetCode 1155. 掷骰子的N种方法(DP)

    1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...

  8. LeetCode 1139. 最大的以 1 为边界的正方形(DP)

    1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...

  9. 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)

    1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...

最新文章

  1. Bert需要理解的一些内容
  2. Docker使用自定义网络实现容器互联
  3. 《自写原创程序,让vim运行c/c++》
  4. Android 多线程及线程通信
  5. 【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
  6. 优化mysql数据库_MySQL数据库十大优化技巧
  7. 【youcans 的 OpenCV 例程 200 篇】102. 陷波带阻滤波器的传递函数
  8. jquery无法找到其他父级子集解决方法
  9. UBUNTU下面安装ICE失败记录过程
  10. 15. 迭代器模式(Iterator Pattern)
  11. js removeEventListener删除匿名函数
  12. 让游戏达到60帧真的重要吗?
  13. 大肇庆!这里不愧是“黑客教父”郭盛华的故乡,人杰地灵,景色优美
  14. 微信小程序支付宝小程序合并二维码
  15. 快速傅里叶变换(蝶形算法)
  16. Flutter学习笔记
  17. css 响应式布局(媒体查询),兼容pc,ipad,移动端的布局单位
  18. adjacent_find 的使用
  19. 计算机word文档快速打数字,word快速提取纯数字
  20. 如何做产品的品牌推广?怎么推广自己的产品?品牌推广怎样做更好

热门文章

  1. 2020 CSP-S 游记
  2. P7990-[USACO21DEC]Closest Cow Wins S【堆,贪心】
  3. nssl1452-排行榜【数论】
  4. 欢乐纪中A组周六赛【2019.5.18】
  5. 2019-2020 ICPC Asia Hong Kong Regional Contest 补题(部分)
  6. 2018年10月17日普级B组【模拟赛】
  7. 网络流及建模专题(下)
  8. codeforces F.F. Teodor is not a liar! 最长不降子序列
  9. 基于消息中间件RabbitMQ实现简单的RPC服务
  10. JFreeChart(五)之XY图