hdu2059:龟兔赛跑
hdu2059: http://acm.hdu.edu.cn/showproblem.php?pid=2059题意:乌龟骑着充满电的电动车从起点出发,途中有n个充电站,离起点的距离为p[i],电动车每次充电后电动时间为t,乌龟电动速度为v1,脚踩电动车速度为v2,兔子恒速为vr,问龟兔输赢。 解法:dp:优化前方程:dp[i][j]表示乌龟上次充电的站点为j,为从起点到i站时间,dp[i][j]=min(dp[i][j],x+dp[j][k]),dp[j][k]为在站点k充电后到j,从起点到j站花费的最短时间(最短因为已经算过了),x为从j站到i站花费的时间,需要3个for。可优化为一维,dp[i]表示从某个站点充电后到达i所用的最短时间,则dp[i]=min(dp[i],dp[j]+x),只需2个for。 优化前code:
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; const int inf=1<<30; double dp[150][150]; int p[150]; int min(int a,int b) {if(a<b)return a;elsereturn b; } int main() {int l,n,c,t,vr,v1,v2;double x,mm;while(scanf("%d",&l)!=EOF){scanf("%d%d%d",&n,&c,&t);scanf("%d%d%d",&vr,&v1,&v2);for(int i=1;i<=n;i++)scanf("%d",&p[i]);for(int i=0;i<=n+1;i++)for(int j=0;j<=n+1;j++)dp[i][j]=inf;p[n+1]=l;p[0]=0;dp[0][0]=0;for(int i=1;i<=n+1;i++){if(p[i]<c)dp[i][0]=1.0*p[i]/v1;else dp[i][0]=1.0*c/v1+1.0*(p[i]-c)/v2;}for(int i=1;i<=n+1;i++) //枚举末站点 {for(int j=0;j<i;j++) //枚举初站点 {if(p[i]-p[j]<c)x=t+1.0*(p[i]-p[j])/v1;elsex=t+1.0*c/v1+1.0*(p[i]-p[j]-c)/v2; //求出从j到i的时间for(int k=0;k<j;k++)dp[i][j]=min(dp[i][j],x+dp[j][k]); }}mm=dp[n+1][0];for(int i=1;i<=n+1;i++)if(dp[n+1][i]<mm)mm=dp[n+1][i];if(mm<1.0*l/vr)printf("What a pity rabbit!\n");elseprintf("Good job,rabbit!\n");} }
优化后code:
#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> using namespace std; double dp[150]; int p[150]; int min(int a,int b) {if(a<b)return a;elsereturn b; } int main() {int l,n,c,t,vr,v1,v2;double x;while(scanf("%d",&l)!=EOF){scanf("%d%d%d",&n,&c,&t);scanf("%d%d%d",&vr,&v1,&v2);for(int i=1;i<=n;i++)scanf("%d",&p[i]);p[n+1]=l;p[0]=0;dp[0]=0;for(int i=1;i<=n+1;i++){if(p[i]<c)dp[i]=1.0*p[i]/v1;else dp[i]=1.0*c/v1+1.0*(p[i]-c)/v2;}for(int i=1;i<=n+1;i++){for(int j=0;j<i;j++){if(p[i]-p[j]<c)x=t+1.0*(p[i]-p[j])/v1;elsex=t+1.0*c/v1+1.0*(p[i]-p[j]-c)/v2;dp[i]=min(dp[i],dp[j]+x);}}if(dp[n+1]<1.0*l/vr)printf("What a pity rabbit!\n");elseprintf("Good job,rabbit!\n");} } /*input: 100 3 20 5 5 8 2 10 40 60 100 3 60 5 5 8 2 10 40 60 output: Good job,rabbit! What a pity rabbit! */
转载于:https://www.cnblogs.com/acmjun/archive/2012/07/25/2608194.html
hdu2059:龟兔赛跑相关推荐
- HDU2059龟兔赛跑
龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HDU2059 龟兔赛跑 (DP)
Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击--赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成了绝技,能够毫不休息得以恒 ...
- PTA 基础编程题目集 7-22 龟兔赛跑 C语言
PTA 基础编程题目集 7-22 龟兔赛跑 C语言 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于 ...
- 用C语言解“龟兔赛跑”题
7-22 龟兔赛跑 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟, ...
- 用Python解“龟兔赛跑”题
7-22 龟兔赛跑 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟, ...
- FZU 1889 龟兔赛跑
Problem Description 万众瞩目的第七届龟兔赛跑比赛在北京时间3333年3月3日于火星打响.此次龟兔赛跑比赛的规则与往届有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是 ...
- c语言作业 龟兔赛跑,c语言龟兔赛跑
满意答案 /*龟兔赛跑,矩形跑道,乌龟3m/s, 兔子9m/s,,兔子每10分钟回头一次,如果超过乌龟, 则兔子休息30分钟.如果没有就继续跑,乌龟一直在跑,求当输入时间T时,兔子和乌龟谁赢或平局*/ ...
- python【蓝桥杯vip练习题库】BASIC-24龟兔赛跑预测(模拟)
试题 基础练习 龟兔赛跑预测 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点--喜欢赛跑.于是 ...
- 基础练习 龟兔赛跑预测
基础练习 龟兔赛跑预测 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点--喜欢 ...
最新文章
- 入门代码教程第一节 如何:定义服务协定
- java OpenCV 图片清晰度、色偏和亮度检测
- 初识源代码管理工具——GitHab
- css( div和span)——读书笔记
- java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?
- npm 查看当前生效的配置
- 多态部分作业 3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)
- jQuery对象与DOM对象的区别
- 显示catispecobject_CATIA CAA 二次开发 详细教程
- 学校计算机教室的用途,录播教室有什么功能,又有哪些用途
- Linux学习笔记001---Windows下安装CentOS7_并且安装桌面UI
- URI、URL与URN【定义+联系】
- 1.3 c++程序的构成和书写形式
- 181223每日一句
- 360与百度的竞争分析
- 利用MapabcAPI实现基于浏览器的地理定位
- 向量叉乘公式_向量外积的高中数学运用
- CSS盒子模型隐藏的几种方式
- 【2019.05.23】JS逆向——破解裁判文书网参数(vl5x,guid )爬虫 超级详细
- Java编写图像浏览器_浏览器下载图像(JAVA代码)
热门文章
- 龙门吊matlab,龙门吊车重物防摆双闭环PID控制设计.doc
- 流量暴增,掌门教育如何基于 Spring Cloud Alibaba 构建微服务体系?
- 关于 Kubernetes 规划的灵魂 n 问
- K8s 实践 | 如何解决多租户集群的安全隔离问题?
- 函数计算自动化运维实战 3 -- 事件触发自动创建快照
- 浙大通讯与计算机网络离线作业,浙大2015年 通信与计算机网络离线作业
- python 写入csv文件固定列_将元组列表写入csv文件保持列一致
- goland创建一个不限长度的字节切片_Go语言入门必知教程-切片
- 手机控制linux电脑,通过Amora用symbian手机控制linux系统的电脑
- 联想rd540服务器怎么装系统,联想RD540加显卡BIOS设置