codeforces 864C - Bus
2017-09-29 21:46
330 查看
http://codeforces.com/problemset/problem/864/C
给出起点与终点的距离,在这之中有一个加油站,汽车油箱有限,问最少需要加油多少次,能够在起点与终点之间来回K次,按照题意模拟,但是需要很多细节,主要思路就是每次判断到达最远的点之后反向能不能到加油站,如果能则在去的路上就不需要加油了。
给出起点与终点的距离,在这之中有一个加油站,汽车油箱有限,问最少需要加油多少次,能够在起点与终点之间来回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; }
相关文章推荐
- 模拟·CodeForces - 864C ·Bus
- [Codeforces 864C]Bus
- CODEFORCES - 864C Bus
- New Bus Route(第一次打codeforces)
- Codeforces 435 A. Queue on Bus Stop
- CodeForces 660 B. Seating On Bus【模拟】
- codeforces 864C 模拟
- Codeforces 435 A Queue on Bus Stop
- 【Codeforces 864 C. Bus】
- codeforces 660B B. Seating On Bus(模拟)
- codeforces 711 A. Bus to Udayland
- codeforces 792A - New Bus Route
- CodeForces 792A之New Bus Route
- New Bus Route (Codeforces-792A)
- 【CodeForces 792A】New Bus Route
- codeforces 864C
- 模拟好题 E - Bus CodeForces - 864C
- [Codeforces] #436 C. Bus
- codeforce 864C Bus(模拟)
- Codeforces 580D Kefa and Dishes