题目大意:给定一地图,*可以和相邻的*匹配成一对儿,问最少需要对儿匹配才能使所有*都被匹配到。 很直白的最小点覆盖,即ans = 点集数-最大匹配数。 不过一开始要对图进行遍历得到点集,找到一个*就把点集数+1,并和周围的匹配即可。为了防止重复, 我只匹配了左边和上边的点。由于用邻接表保存了双向路, ...
分类:
其他好文 时间:
2016-08-18 21:25:27
阅读次数:
238
题意:给一张m*n的棋盘,上面有k个格子有洞,用1*2的骨牌将棋盘覆盖,每个格子必须被恰好覆盖一次,有洞的地方不能覆盖,问是否存在这样的方案。 思路:容易想到将格点作为二分图中的点,骨牌作为二分图中的边(骨牌可能放置时),求二分图的最大匹配,如果匹配数与n*m-k相等,则方案存在,否则不存在;容易想 ...
分类:
其他好文 时间:
2016-08-17 21:08:19
阅读次数:
158
思路:模板题,注意是无向图,所以最后结果要除以2。点有1500个,邻接矩阵会超时,用了邻接表。 ...
分类:
其他好文 时间:
2016-08-12 21:36:12
阅读次数:
163
题意:给定一个NxN的网格,其中有k个格点上有障碍物,每次可以消除一行或一列障碍物,问最少几次可以消除全部的障碍物。 思路:二分图的经典模型,将所有的行看作二分图中左边的端点,将所有的列看作右边的端点,当格点上有障碍物时,连一条边,问题转变为求二分图的最小顶点覆盖,根据König定理由二分图的最大匹 ...
分类:
其他好文 时间:
2016-08-12 21:35:18
阅读次数:
94
机器的不同模式为点,对于每个job,建两条边 A机器需要的模式<->B机器需要的模式。 问题转化为最小点覆盖,然后用二分图的最小点覆盖==最大匹配,用匈牙利算法解。 ...
分类:
系统相关 时间:
2016-08-12 20:04:42
阅读次数:
144
每次选择清除一行或者一列上的小行星。最少选择几次。 将行和列抽象成点,第i行为节点i+n,第j列为节点j,每个行星则是一条边,连接了所在的行列。 于是问题转化成最小点覆盖。二分图的最小点覆盖==最大匹配。 ...
分类:
其他好文 时间:
2016-08-12 18:15:57
阅读次数:
146
n个女生,m个男生。如果女生i愿意让男生j作为parner,那就建边i->j+n,和j+n->i。然后用匈牙利算法算出最大匹配。 要注意N和M都要开2倍。 ...
分类:
其他好文 时间:
2016-08-12 18:07:24
阅读次数:
107
Greediness(贪婪型):最大匹配 X?、X*、X+、X{n,} 是最大匹配。例如你要用 “<.+>” 去匹配 “a<tr>aava </tr>abb”,也许你所期待的结果是想匹配 “<tr>”,但是实际结果却会匹配到 “<tr>aava </tr>。 在 Greediness 的模式下,会尽 ...
分类:
编程语言 时间:
2016-08-12 00:47:21
阅读次数:
235
思路:裸的二分图最大匹配,居然没看出来,我还是要学习一个 ...
分类:
其他好文 时间:
2016-08-10 15:58:49
阅读次数:
162
***题意:求最大匹配是否为n 今天突然想起来吧模板改一下,然而自己得想法不对,WA了有十多次吧,看了一下题解,不需要改,套上模板就行*** ...
分类:
其他好文 时间:
2016-08-09 20:23:40
阅读次数:
99