最小路径覆盖 将一个点拆分为入点和出点,原图的最小路径覆盖=原图的边数 新图的最大匹配 二分图最小点覆盖 最小点覆盖=最大匹配 二分图最大独立集 最大独立集=点数 最小点覆盖 二分图最小边覆盖 最小边覆盖=点数 最小点覆盖 二分图最小点权覆盖 原二分图中的边(u,v)替换为容量为INF的有向边(u, ...
分类:
其他好文 时间:
2019-09-18 19:26:29
阅读次数:
89
所谓二分图,是可以分为两个点集的图; 所谓二分图最大匹配,是两个点集之间,每两个不同点集的点连接,每个点只能连一个点,最大的连接数就是最大匹配。 如何解最大匹配,需要用到匈牙利算法。 匈牙利算法是一个递归的过程,它的特点,我觉得可以归为一个字:“让”。 例如这张图,按照匈牙利算法的思路就是: 1.1 ...
分类:
其他好文 时间:
2019-09-14 17:17:02
阅读次数:
95
参考博客:http://blog.sina.com.cn/s/blog_95ec9e7401018bga.html https://www.cnblogs.com/owenyu/p/6858508.html 用Dinic实现的二分图匹配的时间复杂度其实是O(M*N^0.5),这也许能够解释为什么一般 ...
分类:
其他好文 时间:
2019-09-07 22:27:02
阅读次数:
96
题目描述 lxhgww最近迷上了一款游戏,在游戏里,他拥有很多的装备,每种装备都有2个属性,这些属性的值用[1,10000]之间的数表示。当他使用某种装备时,他只能使用该装备的某一个属性。并且每种装备最多只能使用一次。游戏进行到最后,lxhgww遇到了终极boss,这个终极boss很奇怪,攻击他的装 ...
分类:
编程语言 时间:
2019-09-06 22:44:28
阅读次数:
110
(点击此处查看原题) 匈牙利算法简介 个人认为这个算法是一种贪心+暴力的算法,对于二分图的两部X和Y,记x为X部一点,y为Y部一点,我们枚举X的每个点x,如果Y部存在匹配的点y并且y没有被其他的x匹配,那就直接匹配;如果Y中已经没有可以和x匹配的点(包括可以匹配的点已经被其他的x匹配),那就让已经匹 ...
分类:
编程语言 时间:
2019-08-31 10:54:56
阅读次数:
107
嗯... 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2063 这是一道很经典的匈牙利问题: 把男同学看成左边点,女同学看成右边点,如果两个同学愿意同坐过山车,则连边,最后输出最大匹配数即可... AC代码: 1 #include<cstdio> 2 ...
分类:
其他好文 时间:
2019-08-30 20:45:22
阅读次数:
56
传送门 题目求最少要多少支军队可以把所有城镇覆盖完(DAG的最小不相交路径覆盖) 军队只能向下走,所以建图时就往四个方向连边,最后跑一下最小路径覆盖即可(=点数 - 二分图最大匹配) #include<bits/stdc++.h> #define N 53 using namespace std; ...
分类:
其他好文 时间:
2019-08-27 22:53:03
阅读次数:
140
带花树模板,用来解决一般图的最大匹配。(可以是带权图) ...
分类:
其他好文 时间:
2019-08-26 12:57:33
阅读次数:
68
1 bool dfs(int u) 2 { 3 for (iterator_t i = G[u].begin(); i != G[u].end(); ++i) { // 对 u 的每个邻接点 4 int v = edges[*i].to; 5 if (!check[v]) { // 要求不在交替路中... ...
分类:
编程语言 时间:
2019-08-22 00:34:11
阅读次数:
89
"传送门" 分析: 非常经典的费用流的模型吧,也可以通过二分图最大匹配去做,但是鉴于二分图最大匹配的算法存在一定的局限性,故还是学一学较为通用的费用流的做法。 这道题目中本质上要讨论的问题跟运输问题, "运输问题" 是一致的。 因为考虑到每个人只能被分配到一种货物,每种货物只能被一个人所分配,因此, ...
分类:
其他好文 时间:
2019-08-19 21:22:57
阅读次数:
97