CodeForces 864C Bus

題目鏈接:http://codeforces.com/contest/864/problem/C
題意:在一個一位數軸上,有一輛車,出發點在0,目標點在a,車的郵箱容量爲b,加油站的位置爲f,你要跑k趟,問你最少要加幾次油
解析:直接模擬吧,就是你到當前的加油點,判斷當前油量能否到達下一個加油點,如果能就不加油,否則加油,如果加油都到不了,就直接輸出-1

#include <bits/stdc++.h>
using namespace std;
int main(void)
{
    int a,b,f,k;
    scanf("%d %d %d %d",&a,&b,&f,&k);
    int s = b-f;
    int d = a-f,ans = 0,flag = 1;;
    for(int i=0;i<k-1;i++)
    {
        if(s<0)
        {
            flag = 0;
            break;
        }
        if(2*d>s)
        {
            s = b;
            ans++;
        }
        s -= 2*d;
        d = a-d;
    }
    if(s<0)
        flag = 0;
    if(d>s)
    {
        s = b;
        ans++;
    }
    s -= d;
    if(s<0)
        flag = 0;
    if(flag==0)
        puts("-1");
    else
        printf("%d\n",ans);
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章