codeforces 864C

来源:互联网 发布:淘宝双十一c店报名条件 编辑:程序博客网 时间:2024/06/04 18:31

http://codeforces.com/problemset/problem/864/C




给出起点与终点的距离,在这之中有一个加油站,汽车油箱有限,问最少需要加油多少次,能够在起点与终点之间来回K次,按照题意模拟,但是需要很多细节,主要思路就是每次判断到达最远的点之后反向能不能到加油站,如果能则在去的路上就不需要加油了。






#include<bits/stdc++.h>using namespace std;int main(){long long int a,b,f,k;while(cin>>a>>b>>f>>k){bool dir=0;int bb=b;int ans=0;int tim=0;while(1){if(ans==k)break;if(!dir){dir=!dir;if(ans==k-1){if(b>=a){ans++;continue;}else if(b>=f&&bb>=a-f){tim++;ans++;continue;}else {break;}}if(b>=a+a-f){b-=a;ans++;}else if(b>=f&&bb>=a-f){b=bb-(a-f);tim++;ans++;}else{break;}}else{dir=!dir;if(ans==k-1){if(b>=a){ans++;continue;}else if(b>=a-f&&bb>=f){tim++;ans++;continue;}else {break;}}if(b>=a+f){b-=a;ans++;}else if(b>=a-f&&bb>=f){b=bb-f;tim++;ans++;}else break; } }if(ans==k){cout<<tim<<endl;}else cout<<"-1"<<endl;}return 0;}


原创粉丝点击