分组游戏
时间限制:1秒 内存限制:128M
题目描述
小可所在的班级要分组进行游戏,小可作为班长,要负责分组这个任务。
给小可的要求是:
1、每组有且只能有4位同学。
2、每组至少有一名男生和一名女生。
如果有同学没有组可分,那么会被安排玩另外的游戏。小可想知道最多能分多少组?
输入描述
第一行一个正整数t(1≤t≤10^4 ),代表有t组输入。
对于每组输入,有两个正整数a,b(0≤a,b≤10^9),分别代表有
a位男生和b位女生。
输出描述
对于每组输入,输出最多分多少组。
样例输入
6
5 5
10 1
2 3
0 0
17 2
1000000000 1000000000
样例输出
2
1
1
0
2
500000000
参考GPT和自己的思路:
根据题意,我们需要将男生和女生分组,每组必须有一名男生和一名女生,并且每组人数不能超过4人。因此我们可以按照以下思路进行分组:
最后统计能够分成的组数即可,注意有可能存在男生或女生总人数不足4人的情况,应该特判一下。下面是具体的代码实现:
t = int(input()) # 输入测试数据组数
for _ in range(t):
a, b = map(int, input().split()) # 输入男生和女生人数
# 按照人数从小到大排序
if a > b:
a, b = b, a
# 特判男生或女生总人数不足4人的情况
if a == 0 or a+b < 4:
print(0)
else:
# 每组人数不能超过4人
group_num = min(a, b, (a+b)//3, (a+b)//4)
print(group_num)
运行结果与样例输出一致。
参考GPT和自己的思路:
这是一个简单的数学问题。根据题目要求,每组必须有一名男生和一名女生,那么我们可以将男生和女生的人数分别除以4,得到最多能组成多少对“男-女”组合,取其中较小值作为最多组数。即:
min(a/4, b/4)
其中“/”表示整除,因为每组必须有4名同学。若有剩余的男生或女生无法组成一个完整的“男-女”组合,则无法再分组。所以最多组数不能超过剩余的男生和女生的较小值。最后将上述值取最小值即可。
用所给的男女比例和1/3,2/2,3/1比较一下也许有用?