题目链接: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;
}