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:龟兔赛跑相关推荐

  1. HDU2059龟兔赛跑

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

  2. HDU2059 龟兔赛跑 (DP)

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

  3. PTA 基础编程题目集 7-22 龟兔赛跑 C语言

    PTA 基础编程题目集 7-22 龟兔赛跑 C语言 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于 ...

  4. 用C语言解“龟兔赛跑”题

    7-22 龟兔赛跑 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟, ...

  5. 用Python解“龟兔赛跑”题

    7-22 龟兔赛跑 乌龟与兔子进行赛跑,跑场是一个矩型跑道,跑道边可以随地进行休息.乌龟每分钟可以前进3米,兔子每分钟前进9米:兔子嫌乌龟跑得慢,觉得肯定能跑赢乌龟,于是,每跑10分钟回头看一下乌龟, ...

  6. FZU 1889 龟兔赛跑

    Problem Description 万众瞩目的第七届龟兔赛跑比赛在北京时间3333年3月3日于火星打响.此次龟兔赛跑比赛的规则与往届有所不同,不再考察兔子和乌龟谁在最短的时间内跑完规定的路程,而是 ...

  7. c语言作业 龟兔赛跑,c语言龟兔赛跑

    满意答案 /*龟兔赛跑,矩形跑道,乌龟3m/s, 兔子9m/s,,兔子每10分钟回头一次,如果超过乌龟, 则兔子休息30分钟.如果没有就继续跑,乌龟一直在跑,求当输入时间T时,兔子和乌龟谁赢或平局*/ ...

  8. python【蓝桥杯vip练习题库】BASIC-24龟兔赛跑预测(模拟)

    试题 基础练习 龟兔赛跑预测 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点--喜欢赛跑.于是 ...

  9. 基础练习 龟兔赛跑预测

    基础练习 龟兔赛跑预测 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 话说这个世界上有各种各样的兔子和乌龟,但是研究发现,所有的兔子和乌龟都有一个共同的特点--喜欢 ...

最新文章

  1. 入门代码教程第一节 如何:定义服务协定
  2. java OpenCV 图片清晰度、色偏和亮度检测
  3. 初识源代码管理工具——GitHab
  4. css( div和span)——读书笔记
  5. java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?
  6. npm 查看当前生效的配置
  7. 多态部分作业 3..创建Rodent(啮齿动物):Mnouse(老鼠),Gerbil(鼹鼠),Hamster(大颊鼠)
  8. jQuery对象与DOM对象的区别
  9. 显示catispecobject_CATIA CAA 二次开发 详细教程
  10. 学校计算机教室的用途,录播教室有什么功能,又有哪些用途
  11. Linux学习笔记001---Windows下安装CentOS7_并且安装桌面UI
  12. URI、URL与URN【定义+联系】
  13. 1.3 c++程序的构成和书写形式
  14. 181223每日一句
  15. 360与百度的竞争分析
  16. 利用MapabcAPI实现基于浏览器的地理定位
  17. 向量叉乘公式_向量外积的高中数学运用
  18. CSS盒子模型隐藏的几种方式
  19. 【2019.05.23】JS逆向——破解裁判文书网参数(vl5x,guid )爬虫 超级详细
  20. Java编写图像浏览器_浏览器下载图像(JAVA代码)

热门文章

  1. 龙门吊matlab,龙门吊车重物防摆双闭环PID控制设计.doc
  2. 流量暴增,掌门教育如何基于 Spring Cloud Alibaba 构建微服务体系?
  3. 关于 Kubernetes 规划的灵魂 n 问
  4. K8s 实践 | 如何解决多租户集群的安全隔离问题?
  5. 函数计算自动化运维实战 3 -- 事件触发自动创建快照
  6. 浙大通讯与计算机网络离线作业,浙大2015年 通信与计算机网络离线作业
  7. python 写入csv文件固定列_将元组列表写入csv文件保持列一致
  8. goland创建一个不限长度的字节切片_Go语言入门必知教程-切片
  9. 手机控制linux电脑,通过Amora用symbian手机控制linux系统的电脑
  10. 联想rd540服务器怎么装系统,联想RD540加显卡BIOS设置