杭电acm2059-龟兔赛跑 java
一看题就知道是动态规划,不过这要看下如何设置变化数组了
先分析这道题:兔子到达终点的时间时固定的,因此只需要考虑乌龟了,乌龟骑电车和骑自行车的时间,然后计算,因为中间有N个充电站,可以看做N个点(到起点的点),加上起点和终点则是N+2的位置,这时我们dp,判断到每个点的最小时间,结果也就是第N+2个点的最短时间
起点时间是0.这是必须的,然后往后面DP
到第i个,就让j从0循环到i-1,依次代表从j站一直开到i站,这样得到到达i站所需要
的最短时间。
最后比较到达第n+2站(终点)的时间与兔子所花的时间就可以了。
上代码:
import java.util.Scanner;
public class Main {
static int L;
static int N,C, T;
static int VR,VT1,VT2;
static int p[]= new int [102];
static double dp[]=new double [105];
static void dp(){
double ans,min;
for(int i=0;i<105;i++)
dp[i]=-1;
dp[0]=0;
for(int i=1;i<N+2;i++){
min = 100000;
for(int j=0;j<i;j++){
int len=p[i]-p[j];
if(len>C){
ans=1.0*C/VT1+(len-C+0.0)/VT2; //如果电量不能达到j到i的距离
}
else{
ans=1.0*len/VT1;
}
ans+=dp[j];
if(j!=0)
ans+=T; //过充电站,加上充电时间
if(min>ans)
min=ans;
}
dp[i]=min;
}
}
Main(){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
L=sc.nextInt();
N=sc.nextInt();
C=sc.nextInt();
T=sc.nextInt();
VR=sc.nextInt();
VT1=sc.nextInt();
VT2=sc.nextInt();
for(int i=1;i<=N;i++){
p[i]=sc.nextInt();
}
p[0]=0;
p[N+1]=L;
dp();
if(1.0*L/VR<dp[N+1])
System.out.println("Good job,rabbit!");
else
System.out.println("What a pity rabbit!");
}
}
public static void main(String[] args) {
new Main();
}
}
杭电acm2059-龟兔赛跑 java的更多相关文章
- 杭电HDOJ--ACM1002(JAVA解题,运用BigInteger)(自定义MBigInteger 简单实现大数处理----完善后可以实现百亿计算器)
转载声明:原文转自http://www.cnblogs.com/xiezie/p/5501901.html JAVA解题: import java.util.*; import java. ...
- 杭电oj 4004---The Frog Games java解法
import java.util.Arrays; import java.util.Scanner; //杭电oj 4004 //解题思路:利用二分法查找,即先选取跳跃距离的区间,从最大到最小, // ...
- 杭电oj————2057(java)
question:A+ B again 思路:额,没啥思路/捂脸,用java的long包里的方法,很简单,只是有几次WA,有几点要注意一下 注意:如果数字有加号要删除掉,这里用到了正则表达式“\\+” ...
- 杭电oj2093题,Java版
杭电2093题,Java版 虽然不难但很麻烦. import java.util.ArrayList; import java.util.Collections; import java.util.L ...
- 杭电ACM分类
杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze ...
- HDU-2500 做一个正气的杭电人
http://acm.hdu.edu.cn/showproblem.php?pid=2500 做一个正气的杭电人 Time Limit: 1000/1000 MS (Java/Others) M ...
- 杭电 2047 阿牛的EOF牛肉串 (递推)
阿牛的EOF牛肉串 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total ...
- 做一个正气的杭电人--hdu2500
做一个正气的杭电人 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- 杭电 1272 POJ 1308 小希的迷宫
这道题是我学了并查集过后做的第三个题,教我们的学姐说这是并查集的基础题,所以有必要牢牢掌握. 下面就我做这道题的经验,给大家一些建议吧!当然,我的建议不是最好的,还请各位大神指出我的错误来,我也好改正 ...
- 杭电dp题集,附链接还有解题报告!!!!!
Robberies 点击打开链接 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和- 把状态转移方程写成了f ...
随机推荐
- 基于Redis的分布式锁到底安全吗
http://zhangtielei.com/posts/blog-redlock-reasoning.html
- 从oracle到mysql
过去四年一直是使用oracle,现在要开始使用mysql了,对于使用中发现的不同之处,我在此记录 mysql在linux下表名区分大小写,windows下表名不区分大小写 mysql没有number类 ...
- wb 黑名单批量操作
0. 参考 yu961549745/WeiboBlackList 微博批量拉黑 1. 代码 block.py 更新内容:多线程,urllib.request 改为 requests + sessio ...
- [已解决]virtualBox安装CentOS-6.3-x86_64-bin-DVD1.iso为什么总是显示命令行界面
CentOS 6.3的安装界面分为2种,一种是图形化安装界面,另一种则类似于Dos系统的纯文本安装界面. 进入图形安装界面的必要条件是硬件系统的物理内存大于628M以上即可,因为之前在VBox虚拟机里 ...
- MVC和Web API 过滤器Filter
MVC和Web API Filter(过滤器) ASP.NET MVC 支持以下类型的操作筛选器: · 授权筛选器.这些筛选器用于实现IAuthorizationFilter和做出关于是 ...
- ReactNative调试技术-真机调试
在我开始用ReactNative开始开发APP时,为了能够获取程序运行中的信息,就需要搭建调试环境. 手机调试方式有两类,一类是模拟器方式,另一类是真机模式. 我测试了一下相应的模拟器: 如果用谷歌管 ...
- seafile数据的备份与恢复
seafile数据备份包括MySQL数据备份与seafile,seahub数据备份两个部分.所以在备份的时候需要注意这一点. 我的存储底层用glusterfs数据共享,为了防止一台服务器宕机以后另一台 ...
- 查看windows电脑CPU核心数,线程数
在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中输入“cpu get *”即可查看物理CPU数.CPU核心数.线程数.其中, Name:表示物理CPU数 NumberOfC ...
- [转,讲的非常精彩]CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍)
http://blog.csdn.net/dan15188387481/article/details/49873923 CIDR地址块及其子网划分(内含原始IP地址分类及其子网划分的介绍) 1. ...
- utf-8和utf8的区别
utf-8 和 utf8 的区别与使用: "UTF-8" 是标准写法,php 在 Windows 系统里的英文不区分大小写,所以也可以写成 "utf-8".&q ...