題目鏈接: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;
}