HDU2059(DP)
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)相关推荐
- 求三角形最大面积(DP)
求三角形最大面积(DP) 在OJ上奇迹般WA了:WA:70. Why? #include <iostream> #include <string.h> using namesp ...
- LeetCode 编辑距离 II(DP)
1. 题目 给你两个单词 s 和 t,请你计算出将 s 转换成 t 所使用的最少操作数. 你可以对一个单词进行如下两种操作: 删除一个字符 替换一个字符 注意: 不允许插入操作 题目保证有解 示例: ...
- LeetCode 1220. 统计元音字母序列的数目(DP)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数 n,请你帮忙统计一下我们可以按下述规则形成多少个长度为 n 的字符串: - 字符串中的每个字符都应当是小写元音字母('a', 'e', 'i ...
- LeetCode 265. 粉刷房子 II(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成 k 种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同. 当然,因为市场上不同颜色油 ...
- LeetCode 256. 粉刷房子(DP)
文章目录 1. 题目 2. 解题 1. 题目 假如有一排房子,共 n 个,每个房子可以被粉刷成红色.蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其与相邻的两个房子颜色不能相同. 当然,因 ...
- LeetCode 1223. 掷骰子模拟(DP)
1. 题目 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时,连续 掷出数字 i 的次数不能超过 rollMax[i](i 从 1 开始 ...
- LeetCode 1155. 掷骰子的N种方法(DP)
1. 题目 这里有 d 个一样的骰子,每个骰子上都有 f 个面,分别标号为 1, 2, -, f. 我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和. 如果需要掷出的总点数为 target,请你 ...
- LeetCode 1139. 最大的以 1 为边界的正方形(DP)
1. 题目 给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量.如果不存在,则返回 0. 示例 1: 输入:grid ...
- 程序员面试金典 - 面试题 17.23. 最大黑方阵(DP)
1. 题目 给定一个方阵,其中每个单元(像素)非黑即白. 设计一个算法,找出 4 条边皆为黑色像素的最大子方阵. 返回一个数组 [r, c, size] ,其中 r, c 分别代表子方阵左上角的行号和 ...
最新文章
- Bert需要理解的一些内容
- Docker使用自定义网络实现容器互联
- 《自写原创程序,让vim运行c/c++》
- Android 多线程及线程通信
- 【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
- 优化mysql数据库_MySQL数据库十大优化技巧
- 【youcans 的 OpenCV 例程 200 篇】102. 陷波带阻滤波器的传递函数
- jquery无法找到其他父级子集解决方法
- UBUNTU下面安装ICE失败记录过程
- 15. 迭代器模式(Iterator Pattern)
- js removeEventListener删除匿名函数
- 让游戏达到60帧真的重要吗?
- 大肇庆!这里不愧是“黑客教父”郭盛华的故乡,人杰地灵,景色优美
- 微信小程序支付宝小程序合并二维码
- 快速傅里叶变换(蝶形算法)
- Flutter学习笔记
- css 响应式布局(媒体查询),兼容pc,ipad,移动端的布局单位
- adjacent_find 的使用
- 计算机word文档快速打数字,word快速提取纯数字
- 如何做产品的品牌推广?怎么推广自己的产品?品牌推广怎样做更好
热门文章
- 2020 CSP-S 游记
- P7990-[USACO21DEC]Closest Cow Wins S【堆,贪心】
- nssl1452-排行榜【数论】
- 欢乐纪中A组周六赛【2019.5.18】
- 2019-2020 ICPC Asia Hong Kong Regional Contest 补题(部分)
- 2018年10月17日普级B组【模拟赛】
- 网络流及建模专题(下)
- codeforces F.F. Teodor is not a liar! 最长不降子序列
- 基于消息中间件RabbitMQ实现简单的RPC服务
- JFreeChart(五)之XY图