杭电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 cluster集群模式的原理
redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内 ...
- python--使用双向队列结构检查回文
这个简单,队列可两边进两边出. # coding = utf-8 # 双向进出队列 class Deque: def __init__(self): self.items = [] def is_em ...
- C++ 成员初始化列表
1.什么是成员初始化列表 #include<iostream> #include<string> using namespace std; class Weapon { pri ...
- Windows Azure 部署 Windows 8 虚拟机
基本步骤其实很简单,主要有: 本地部署虚拟机 将虚拟机VHD上传至Azure 在Azure上根据VHD生成映像 利用映像生成虚拟机 下面我们开始: 1,本地部署虚拟机 首先我们需要在本地用 Hyper ...
- [转]DBCP连接池的最简单应用(用于ORACLE数据库)
http://blog.csdn.net/iihero/article/details/8254107 http://www.programgo.com/article/81693457907/ 鉴于 ...
- H.265:网络视频的高清时代
去年八月,爱立信公司推出了首款H.265编解码器,而在仅仅六个月之后,国际电联(ITU)就正式批准通过了HEVC/H.265标准,标准全称为高效视频编码(High Efficiency Video C ...
- Codeforces 758F Geometrical Progression
Geometrical Progression n == 1的时候答案为区间长度, n == 2的时候每两个数字都可能成为答案, 我们只需要考虑 n == 3的情况, 我们可以枚举公差, 其分子分母都 ...
- 数据特征分析:1.基础分析概述& 分布分析
基础分析概述 几个基础分析思路: 分布分析 对比分析 统计分析 帕累托分析 正态性检测 相关性分析 分布分析 分布分析是研究数据的分布特征和分布类型,分定量数据.定性数据区分基本统计量. import ...
- request和session的区别
request多用于表单提交,表单数据等 session用于服务器端的记录变量,比如用户的登陆和登出啊 request 资源占用小,安全性较高,但是不持续性 session 资源消耗较大,安全性较低, ...
- CentOS 7 休眠系统
CentOS 7的电源按钮只有关机和重启两项,但是可以用命令来休眠系统: 重启: $ systemctl reboot 退出系统并停止电源: $ systemctl poweroff 待机: $ sy ...