题意:一辆车从0点出发,开向a点,或者从a开向0,称为一次journey,在f点有个加油站能加满油(油箱容量为b),问最少加几次油能进行k次journey。若不能,输出-1。
备注:最开始起点为零。
分析:当b小于f或者b小于a-f时,显然一次journey都不能进行。
首先模拟车开到f点,若此时还剩一次journey,只需判断剩下的油够不够开到a点,否则判断剩下的油够不够开到下一次到达f点,若加满油都开不到下一个f点,输出-1。另一点同理。
AC代码:
#includeusing namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int a,b,f,k; cin>>a>>b>>f>>k; if(f>b) cout<<"-1"< b){ cout<<"-1"< gas){ gas=b; sum++; } gas-=need; } else{ int need; if(i==k) need=f; else need=2*f; if(need>b){ cout<<-1< gas){ gas=b; sum++; } gas-=need; } } cout<<>