题目:No Breakfast for College Students
来源:第三届中国计量大学ACM程序设计竞赛个人赛(同步赛)
解题思路
Gyro 在假期吃了 b 次早餐,l 次午餐,s 次晚餐。
他是在早餐前、午餐前、晚餐前、晚餐后这四个时间段中的某一段到达家里,在这四个时间段的某一段离开。
问 Gyro 在家中最少可能错过了几次进餐。
假设 b = 3, l = 2, s = 1,早餐次数最多,那么在第一天早餐前到达家里,第三天早餐后离开,错过进餐次数最少。
三种进餐,最多的记为 maxn,最少的记为 minn,剩下的那餐记为 midn。
如果 maxn 与其余两餐的差值 <= 1,那么其对应的进餐最少都没有错过;
否则,错过进餐次数最少为 maxn - minn - 1 与 maxn - midn - 1 之和。
C++代码
#include<iostream>
using namespace std;
int main(){
int T;
cin >> T;
long long b, l, s;
while(T){
--T;
cin >> b >> l >> s;
long long maxn = max(max(b, l), s);
long long minn = min(min(b, l), s);
long long midn = b + l + s - maxn - minn;
long long ans = 0;
if(maxn - minn <= 1)
ans = 0;
else if(maxn - midn <= 1)
ans = maxn - minn - 1;
else
ans = maxn - minn + maxn - midn - 2;
cout << ans << endl;
}
return 0;
}
京公网安备 11010502036488号