A.Hands
A题题目链接
【题解】首先自己按照题意画一下图示,求从A楼的a层到B楼的b层的最少时间。可以观察到,我们可以根据讨论a, b的大小。
- a = b, 显然ans是x(时间单位略去)
- a > b, 你不妨就先设a = 4, b = 2来看,首先我们知道肯定要从A楼的第4层走到B楼的第3层,需要x; 再由B楼第3层走到B楼的第2层,耗时(a - b - 1) * min(2*x, y),则ans = x + (a - b - 1)*min(2x, y)
- a < b, 你不妨先设a = 2, b = 4来看,首先我们知道肯定要从A楼的第2层走到B楼的第2层,需要x, 然后由B楼的第2层走到B楼的第4层,耗时(b - a) * min(2*x, y),则ans = x + (b - a)*min(2x, y)
#include<bits/stdc++.h>
using namespace std;
int main() {
int a, b, x, y;
while(scanf("%d%d%d%d", &a, &b, &x, &y) != EOF) {
int ans = 0;
if(a > b) {
ans = x + (a - b - 1) * min(2 * x, y);
} else if(a == b) {
ans = x;
} else {
ans = x + (b - a) * min(2 * x, y);
}
printf("%d\n", ans);
}
return 0;
}