『题解』CodeForces CF1611B Team Composition Programmers and Mathematicians
题目大意
有 \(a\) 名程序员和 \(b\) 名数学家,求他们最多能组成多少支队伍。
队伍约束如下:
- 至少一名程序员和一名数学家。
- 人数必须恰好为 \(4\) 人。
思路
本题使用分类讨论。
- 考虑极限情况:每组仅有一名程序员或数学家,那么条件 \(a \ge 3b\ or\ b \ge 3a\) 一定成立。此时可以组建 \(\min(a,b)\) 支队伍,剩余人数不考虑。
- 考虑一般情况:即条件 \(a \ge 3b\ or\ b \ge 3a\) 不成立,那么只能组建 \(\lfloor \dfrac{a+b}{4} \rfloor\) 支队伍。
答案仅需取两种情况的最小值,输出 \(\min(\min(a,b),\lfloor \dfrac{a+b}{4} \rfloor)\) 即可。
代码
#include <iostream>
using namespace std;
int t,a,b;
int main(){
cin >> t;
while(t--){
cin >> a >> b;
cout << min(min(a,b),(a+b)/4) << endl;
}
return 0;
}