二分图匹配总结
二分图匹配
1、二分图最大匹配,求两个集合内,每个元素只能用一次,两集合间存在一些匹配关系,求最大匹配多少对,利用匈牙利算法,对于每个结点不断去找增广路去匹配
有几个重要性质:
1、最小点覆盖 = 最大匹配
2、最大独立集 = 总结点 - 最大匹配
模板:
bool dfs(int u) {
for (int i = 0; i < g[u]....
分类:
其他好文 时间:
2014-11-02 19:42:12
阅读次数:
174
http://acm.hdu.edu.cn/showproblem.php?pid=5093二分图最大匹配的经典建图模型,行列分别缩点(连起来的'*' & 'o'),交集有'*'就连边#include #include #include #include #include using namespa...
分类:
其他好文 时间:
2014-11-02 18:15:26
阅读次数:
198
匈牙利算法,求二分图最大匹配。若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。(M为一个匹配)由增广路的定义可以推出下述三个结论:P的路径长度必定为奇数,第一条边和最后一条边都不属于M。所以Line 25-...
分类:
其他好文 时间:
2014-11-02 13:45:21
阅读次数:
257
HDU 3523 Image copy detection
题目链接
题意:这题其实题意读懂就简单了,说白了就是1-n放到1-n列,每列的值为每列上数字和该数字的差的绝对值,然后求总和最小
思路:就一KM最大匹配
代码:
#include
#include
#include
#include
#include
using namespace std;
co...
分类:
其他好文 时间:
2014-11-02 00:39:29
阅读次数:
336
有这么两个奇怪的工厂:工厂X只生产杯具,工厂Y只生产洗具。最近,两个工厂决定将产品实行打包策略:即一个杯具搭配上一个洗具。但由于杯具和洗具的形状和功能各不相同,对于某个类别的杯具来说,只能搭配某些类型的洗具。现在,两个工厂的厂长大人想知道最多能成功的搭配多少对杯具与洗具。 类似于上面例子中提到...
分类:
编程语言 时间:
2014-11-02 00:23:29
阅读次数:
370
汉字注音
在平时应用中,可能会有这样的需求:要给一些中文进行自动注音。这个程序就是根据这个需求实现的。
思想
汉字注音程序的思想主要是依赖一些已有的常用词的注音词表。对于给定的需要注音的汉字串text,首先对text进行分词。这里的分词方法采用了正向最大匹配和逆向最大匹配想结合的方法。然后根据注音词表中每个词是某个音的概率,得到一个最大可能的注音结果。
思想很简单,...
分类:
其他好文 时间:
2014-11-01 20:34:23
阅读次数:
337
HDU 3315 My Brute
题目链接
和HDU2835是一样的思路,利用把数字离散掉来多判断一个优先级
代码:
#include
#include
#include
#include
using namespace std;
const int MAXNODE = 105;
typedef int Type;
const Type INF = 0x3f3...
分类:
其他好文 时间:
2014-11-01 19:17:18
阅读次数:
191
HDU 2236 无题II
题目链接
思路:行列只能一个,想到二分图,然后二分区间长度,枚举下限,就能求出哪些边是能用的,然后建图跑二分图,如果最大匹配等于n就是符合的
代码:
#include
#include
#include
#include
using namespace std;
const int N = 105;
int t, n, x[N][N]...
分类:
其他好文 时间:
2014-11-01 14:53:58
阅读次数:
189
HDU 3722 Card Game
题目链接
题意:给定一些字符串,每次可以选两个a,b出来,a的前缀和b的后缀的最长公共长度就是获得的值,字符串不能重复选,问最大能获得多少值
思路:KM最大匹配,两两串建边,跑最大匹配即可
代码:
#include
#include
#include
#include
using namespace std;
const...
分类:
其他好文 时间:
2014-10-31 20:45:16
阅读次数:
256
HDU 3718 Similarity
题目链接
题意:给定一个标准答案字符串,然后下面每一行给一个串,要求把字符一种对应一种,要求匹配尽量多
思路:显然的KM最大匹配问题,位置对应的字符连边权值+1
代码:
#include
#include
#include
#include
using namespace std;
const int MAXNODE ...
分类:
其他好文 时间:
2014-10-31 19:08:04
阅读次数:
214