codeforces 543B Covered Path

题目链接 http://codeforces.com/problemset/problem/534/B

题意:一辆车子行驶,起始速度为v1 m/s,结束速度为v2 m/s, 行驶 t 秒 ,加速度最大为d 。

该车在1秒内是匀速的,求该车的最大行驶距离。

 

 

 

 

 

题目思路:利用贪心策略,找到该车在这秒的最大加速度,使得接下来时间内它仍能回到v2速度,那么就采取那个加速度。

特判d为0的情况

代码如下:

#include<bits/stdc++.h>

using namespace std;
int canput(int n1,int add,int n2,int t,int d){
    n1+=add;
    t--;
    int cha = abs(n2-n1);
    if((cha%d==0?cha/d:cha/d+1)<=t)return 1;
    else return 0;

}

int main()
{

    int n1,n2,t,d;
    scanf("%d%d%d%d",&n1,&n2,&t,&d);
    int ans = 0;
    if(d==0){
        ans = n1*t;
    }else{

        while(t--){
            ans += n1;
            int flag = -1;
            for(int i=d;i>=-d;i--){
                int temp = canput(n1,i,n2,t,d);
         
                if(temp){
                    flag = i;
                    break;
                }

            }
            n1+=flag;


        }
    }
    printf("%d\n",ans);


}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值