Covered Path

题意:开始速度v1,t秒后的速度v2,一秒内的速度变化不能超过d。
输入:
v1 v2
t d
输入:t时间内的行程的最大值
思路:
这个题目很怪。结束速度有限制的,同时求的是最大的行程,所以要在开始时间段内加速,每次加到最大值,后面时间要减速,使结束的时的速度是v2.
v1=Math.min(v1+d, v2+(t-1-i)*d) 网上看到根据这个等式计算的速度恰好能使结束速度是v2,至于是怎么来的,我也不明白,体会下好像是的。
最大的行程应该是:前几秒每秒以最大的加速d行驶,后几秒尽可能的减最小的速度到达速度v2.

import java.io.PrintStream;

import java.util.Scanner;


public class B534 {

    public static void solve(){
        Scanner in=new Scanner(System.in);
        PrintStream out=System.out;
        int v1=in.nextInt();
        int v2=in.nextInt();
        int t=in.nextInt();
        int d=in.nextInt();
        int ans=v1;
        int count=v1;
        for(int i=1;i<t;i++){
            v1=Math.min(v1+d, v2+(t-1-i)*d);
// out.print(v1+" ");
            count+=v1;
        }
        out.println(count);

    }
    public static void main(String[] args) {

        new B534().solve();

    }

}

你可能感兴趣的:(java,codeforce)