HDU-1498-50 years, 50 colors(踩颜色相同的气球。行列最大匹配)

解析一个名为“撞色气球”的游戏背后的算法。游戏中,玩家需在有限次数内击破特定颜色的气球,目标是找出在规定次数内无法被击破的气球颜色。采用二分图方法进行求解,通过构建行与列的点覆盖关系,确定最少的行或列数量以覆盖所有气球位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目
有一个游戏叫做“撞色气球”。
地面上有一个n*n矩阵板,每个格子上都有一个彩色气球。气球的颜色将在[1,50]的范围内。在裁判大喊“开始!”,你可以开始撞击气球。每次只能选择一种气球坠毁时,我们定义两个颜色相同的气球属于同一种气球。更重要的是,每次你只能选择一个气球的单行或一列,并崩溃与你选择的颜色气球。当然,很多学生都在等着玩这个游戏,所以我们只给每个学生k次的时间去撞气球。
问题来了:哪种气球不可能在k次里都被学生撞坏。

输入

将有多个输入用例。每个测试用例以两个整数n开始,k. n是气球的行数和列数(1 <= n <= 100), k是每个学生ginving的次数(0 < k <= n)。根据矩阵a (n*n) Aij表示第i行j列中球的颜色。输入以n = k = 0结束。

输出

对于每个测试用例,按升序打印学生不可能在k次中崩溃的所有颜色。如果没有选择,请打印“-1”。
在这里插入图片描述
Sample Input

1 1
1
2 1
1 1
1 2
2 1
1 2
2 2
5 4
1 2 3 4 5
2 3 4 5 1
3 4 5 1 2
4 5 1 2 3
5 1 2 3 4
3 3
50 50 50
50 50 50
50 50 50
0 0

题解: 二分图的方法,纵横坐标变成可以构成二分图,转换一下思想其实就是让我们求最小点覆盖 左边的一个点代表一行 右边的一个点代表一列,要用几行或者几列把给出的边覆盖 边代表一个坐标的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值