二分图的覆盖

最小点覆盖,即用最少的点去覆盖所有的边。(只要一条边的一个节点被标记,那这一条边就被覆盖啦!)

解法:二分图最小点覆盖包含的点数等于二分图最大匹配的边数。

惊不惊喜意不意外!!!!

思考一下会不会存在一种情况,使得一条边的两个点都被选择?当然有可能!


主要还是难在构图的。

来看俩题意思一下。

poj1325:有两台computer及N个任务,每台computer有M种模式。对于每个任务给定a[i],b[i],表示如果在a上运行要求的模式,以及在b上运行要求的模式。现在问怎么使更改模式的次数最小。

我们考虑到,每个任务要么在a要么在b,必选其一。所以把机器A的M种模式作为M个左点,B的M种作为M个右点,求出最小覆盖就ok了。复杂度O(NM)。

poj2226:N*M的网格状地面上,有一些格子泥泞,其他干净。要用木板覆盖泥泞格子(不准覆盖干净格子)。木板可以是1*x的(x∈全体正整数)。最少需要多少块木板?

我们把连续的泥地看作一个块,即有行泥泞块与列泥泞块。我们把行泥泞块作为左节点,列泥泞块作为右节点,对于每块泥地,在它所属的行块与列块间连边。求出最小覆盖即可。


补一道二分图带权最大匹配题目。

poj3565:平面上有N个白点,N个黑点,对每个白点,找到一个黑点,把二者连起来。要求最后线段都不相交。保证有解,求一种方案。

所有都不相交 + 保证有解 = 总长度最小(这个真的神了)

于是我们做一个二分图最小权值匹配。即,把所有权值取相反数,用KM算法算最大。答案就是KM结果的相反数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值