题目链接:http://poj.org/problem?id=3020
给定一个网格,网格中某些格子有点,用一些2*1的挡板覆盖,问在可以重叠覆盖的情况下覆盖掉所有的点至少需要多少挡板。
这题是二分图匹配。一开始想到了是一张图求最小边覆盖集,但却没想到怎么向二分图转化。其实这题不用转化,因为我们可以给斜行染两种颜色,相邻斜行染不同颜色,然后就会发现其实所有的边(若结点相邻则连边)都是连接的两种颜色的结点,这已经是二分图了。直接在这张图上跑匈牙利算法求解就行了。答案最小边覆盖集就是n-最大匹配。
另外需要注意的是这样连边正反各自连了一遍,匈牙利算法跑的时候也没有区分两种颜色的结点,因此最大匹配要除二。
1 |
|