二分匹配
文章平均质量分 79
紫杉丶
这个作者很懒,什么都没留下…
展开
-
HDU 1281 棋盘游戏
将行与列构成二分图 重要点就是每次去除一个点,然后再找最大匹配 如果小于原来的最大匹配 说明该点为重要点#include#include#include#include#includeusing namespace std;#define mod 100000007typedef long long LL;const int M = 310;int mp[105][105原创 2015-07-12 10:16:27 · 304 阅读 · 0 评论 -
HDU 2444 The Accomodation of Students
典型的二分图匹配,首先要判断是否为二分图 用染色法,然后就是匈牙利算法。#include#include#include#includeusing namespace std;typedef long long LL;const int M = 210;struct node{ int from,to,next;} edge[210*210];int原创 2015-07-06 15:49:57 · 292 阅读 · 0 评论 -
HDU 5285 wyh2000 and pupil
用染色法判断一下就好,不认识的人不同的颜色即不同分组,人数最多的一组在前#include#include#includeusing namespace std;typedef long long LL;int edgenum;int n,m;int flag;int color[100010];int colornum[2];int head[100010];int v原创 2015-07-19 08:46:41 · 696 阅读 · 0 评论 -
HDU 2255 奔小康赚大钱 (KM算法)
直接输入w[i][j]边权值建图套模板就可以了 //#pragma comment(linker, "/STACK:102400000,102400000")#include #include #include #include #include using namespace std;typedef long long LL;const long long mod = 1e9原创 2015-08-12 20:20:16 · 339 阅读 · 0 评论 -
HDU 2853 Assignment (KM算法)
来自网上的巧妙思路:因为我们要变动最小,所以对在原计划中的边要有一些特殊照顾,使得最优匹配时,尽量优先使用原计划的边,这样变化才能是最小的且不会影响原匹配。根据这个思想,我们可以把每条边的权值扩大k倍,k要大于n。然后对原计划的边都+1。精华全在这里。我们来详细说明一下。全部边都扩大了k倍,而且k比n大,这样,我们求出的最优匹配就是k倍的最大权值,只要除以k就可以得到最大权值。实现原计原创 2015-08-13 22:16:21 · 359 阅读 · 0 评论 -
POJ 3020 Antenna Placement (Hungary)
求最小覆盖边, 无向二分图的最小路径覆盖 = 顶点数 – 最大二分匹配数/2 由于构图过程中匹配双向的,所以匹配数多了一倍,最后要/2 构图可以用奇偶,或者用数来标记//#pragma comment(linker, "/STACK:102400000,102400000")#include #include #include #include #include usi原创 2015-08-15 10:08:30 · 426 阅读 · 0 评论