Programming_Konjac 2023-03-17 14:50 采纳率: 31.6%
浏览 29
已结题

嗯~这玩意我陷入了沉思

分组游戏
时间限制: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

  • 写回答

3条回答 默认 最新

  • lshen01 2023-03-17 14:57
    关注

    参考GPT和自己的思路:

    根据题意,我们需要将男生和女生分组,每组必须有一名男生和一名女生,并且每组人数不能超过4人。因此我们可以按照以下思路进行分组:

    1. 先将男生和女生分别按照人数从小到大排序。
    2. 当男生和女生都不为0时,每次选择一名男生和一名女生放入一组中,直到不能再放置时停止。
    3. 如果还有剩余的男生或女生,可以将一名男生和两名女生放入一组中,或者将三名女生放入一组中,直到没有剩余为止。

    最后统计能够分成的组数即可,注意有可能存在男生或女生总人数不足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)
    

    运行结果与样例输出一致。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月25日
  • 已采纳回答 3月17日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?
  • ¥15 关于#vue.js#的问题:修改用户信息功能图片无法回显,数据库中只存了一张图片(相关搜索:字符串)
  • ¥15 texstudio的问题,
  • ¥15 spaceclaim模型变灰色
  • ¥15 求一份华为esight平台V300R009C00SPC200这个型号的api接口文档
  • ¥15 字符串比较代码的漏洞
  • ¥15 欧拉系统opt目录空间使用100%
  • ¥15 ul做导航栏格式不对怎么改?