杭电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();
    }
}

原文地址:https://www.cnblogs.com/ls-pankong/p/9710775.html

时间: 2024-10-23 02:16:03

杭电acm2059-龟兔赛跑 java的相关文章

杭电 2059 龟兔赛跑

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/28441197 现在很多APP都给ScrollView添加了反弹效果,QQ.小米私密短信等.恰好在网上看到一个类:BounceScrollView , 原创地址是:http://blog.csdn.net/h7870181/article/details/8960430 , 可惜作者没有提供一个效果图,于是我发现小米短信列表页往下拉,有反弹效果,且拉到1/3以上时,会打开私密短信

杭电HDOJ--ACM1002(JAVA解题,运用BigInteger)

JAVA解题: import java.util.*; import java.io.*; import java.math.BigInteger; public class Main{ public static void main(String[] arg){ Scanner scan = new Scanner(new BufferedInputStream(System.in)); int n = scan.nextInt(); int l = n; while(n--!=0){ Big

杭电2059龟兔赛跑

http://acm.hdu.edu.cn/showproblem.php?pid=2059 我们需要输入的有 (1)l (2)n,c,t; (3)vr,v1,v2; (4)p[1],p[2],p[3],    p[n]; 我们需要比较的是兔子的时间和乌龟的时间 兔子:1.0*l/vr; 乌龟: 乌龟的时间由题意可得,是需要最短的,所以我们只需要找出乌龟到终点的num种时间,并在这num种时间里找出最短的即可. 比如乌龟从加油站1到加油站4一共有四种不同时间的走法 1---2---3---4:

杭电2058 龟兔赛跑

#include <iostream> #include <string> using namespace std; #include <algorithm> int main() { // freopen("input.txt", "r", stdin); int l; int n,c,t; int vr, vt1, vt2; int ns[102]; int i,j,len; double dp[102],tmp; while

杭电ACM Java实现样例

若使用Java求解杭电ACM,答案提交必须注意两点: 1.类名一定得是Main,否则服务器无法编译: 2.必须用while进行输入判断. 以1000题测试题为例,代码如下: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); while(scan.hasNextInt()) { int a=scan.n

杭电1379(DNA Sorting)java面向对象编程

点击打开链杭电1379 Problem Description One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence ``DAABEC'', this measure is 5, since D is greater t

杭电2005(第几天?)java字符串水过

点击打开杭电2005 1.split的应用:将字符串以某某字符为界划分为多个字符串 2.面向对象的编程 Problem Description 给定一个日期,输出这个日期是该年的第几天. Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的. Output 对于每组输入数据,输出一行,表示该日期是该年的第几天. Sample Input 1985/1/20 2006/3/12 Sample Out

杭电2549(第一次用java写kmp算法)

点击打开杭电2549 Problem Description Homer: Marge, I just figured out a way to discover some of the talents we weren't aware we had. Marge: Yeah, what is it? Homer: Take me for example. I want to find out if I have a talent in politics, OK? Marge: OK. Home

杭电1047(Integer Inquiry)java水过

点击打开杭电1047 Problem Description One of the first users of BIT's new supercomputer was Chip Diller. He extended his exploration of powers of 3 to go from 0 to 333 and he explored taking various sums of those numbers. ``This supercomputer is great,'' re

2015考研 杭电 计算机学院 复试笔试题第一题 JAVA语言解法

杭电 2015年考研 计算机学院 复试笔试第一题 JAVA解法 import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; /* 杭电2015年 计算机学院 复试 笔试题第一题 JAVA解答 * author 刘汪洋 QQ 605283073 * 求出:字符串如:"34223abd#34SB-11--" * 中整数的和 其中-在数字前表示负号,否则为字符 */ pub