标签:
input | output |
---|---|
150 50 1000 100 |
450 |
解析:很关键的一句话是上文中的红色标记出来的要求,现实情况也是,他们两个一个加价,一个减价,当价格再加减一次就满足要求时,乘客只需要付给当前司机要求的价格与下一轮乘客要出的价格之间的最小值即可,当然,当初始时乘客给的价格就不小于司机要求的价格时,直接就交易了。
AC代码:
#include <cstdio> #include <algorithm> using namespace std; int main(){ #ifdef sxk freopen("in.txt", "r", stdin); #endif //sxk int a, b, c, d; while(scanf("%d%d%d%d", &a, &b, &c, &d)==4){ int ans = 0; for(int i=0; ; i++){ if(a + b * i >= c - d * i){ if(i) ans = min(a + b * i, c - d * (i - 1)); //贪心付两者的最小值 else ans = a; //初始就满足要求,直接成交 break; } } printf("%d\n", ans); } return 0; }
标签:
原文地址:http://blog.csdn.net/u013446688/article/details/44197553