二分图
verdin黄大锤
afo啦!
展开
-
poj 2226 Muddy Fields
题目:Muddy Fields题意: 有一块矩形的农场,其中有一些地是草,有一些地是泥。现要将所有泥地上都铺上木板,且木板不能覆盖草。木板为矩形,且宽始终为1,木板可相互重合。思路: 把每块木板看做点,两块木板的重合的点看做边(由于每个泥地都可以看做是两块木板的交点,所以可以知道图上的每条边和泥地一一对应)。 因为木板只有横和竖两种状态,所以可以人为的把点根据横竖分为两块。又由于横着...原创 2018-09-12 21:29:32 · 134 阅读 · 0 评论 -
洛谷 P2055 [ZJOI2009]假期的宿舍
题目:假期的宿舍emm……为什么二分图会写错这么多次?我不会说是因为我建图建错了的……思路:我好像没有说过我建错了图,二分图匹配好像没有什么好说的,所以这里说下建图的问题。首先,我们考虑用学生和空床匹配。床的个数一定等于本校学生人数,因为不管学生是否离校,他们的床都在。需要和床匹配的人数就是 没有回家的本校学生人数 + 非本校学生。所以,一个人 i 可以和 j的床 连边的条...原创 2018-12-24 23:24:49 · 110 阅读 · 0 评论 -
洛谷 P1640 [SCOI2010]连续攻击游戏
题目:连续攻击游戏思路:二分图匹配问题。代码:#include<bits/stdc++.h>using namespace std;#define maxn 1000000#define maxm 10000#define read(x) scanf("%d",&x)int n;vector<int> a[maxn+5];int use[ma...原创 2018-12-11 20:36:04 · 180 阅读 · 0 评论 -
洛谷 P1330 封锁阳光大学
题目:封锁阳光大学思路:必须满足一条边连接的两点有且只有一点被选择,所以用二分图判定。代码:#include<bits/stdc++.h>using namespace std;#define maxn 10000#define maxm 100000#define read(x) scanf("%d",&x)int n,m;vector<int&g...原创 2018-12-07 16:29:57 · 111 阅读 · 0 评论 -
洛谷 P1182 数列分段`Section II`
题目:数列分段Section II思路:二分+贪心。代码:#pragma GCC optimize (2)#include<bits/stdc++.h>using namespace std;#define maxn 100000#define read(x) scanf("%d",&x)int n,m;int a[maxn+5];bool judg...原创 2018-10-09 20:54:27 · 175 阅读 · 0 评论 -
洛谷 P2765 魔术球问题 (网络流24题)
题目:魔术球问题思路:听说这题答案的范围很小。听说从1开始枚举答案大小不会超时。然后我就枚举答案了。假设答案为m,就对于m个数,每个数暴力的寻找可以可以放在它下面的数再建边。由于只有可能上面的点指向下面的点,所以这张图不存在环,可见是一张二分图。然后从m开始跑一遍匈牙利算法看看能否求出增广路,如果不能,则说明无法对m进行匹配,则需要再加一根柱子放m。当柱子的数量大于n时,就说明m-...原创 2018-09-26 21:57:48 · 340 阅读 · 0 评论 -
洛谷 P2764 最小路径覆盖问题 (网络流24题)
题目:最小路径覆盖问题思路:把每个点拆成两个点,其中一个作为入点,另一个作为出点。然后对于这个二分图求最大匹配输出。之前因为int没加返回值,系统开了O2优化RE了好久QAQ……代码:#pragma GCC optimize(2)#include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 150#define m...原创 2018-09-25 21:49:10 · 246 阅读 · 0 评论 -
洛谷 P2756 飞行员配对方案问题(网络流24题)
题目:飞行员配对方案问题思路:二分图匹配。代码:#include&lt;bits/stdc++.h&gt;using namespace std;#define maxn 100#define read(x) scanf("%d",&amp;x);int m,n;vector&lt;int&gt; g[maxn+5];int match[maxn原创 2018-09-19 21:34:12 · 198 阅读 · 0 评论 -
洛谷 P3355 骑士共存问题 (网络流24题)
题目:骑士共存问题思路: 听说这题是最大流 / 最小割 (不会啊) 画个图可以知道,根据互相能到达的关系建图,不存在奇环,即这个图是二分图。 然后求不能互相攻击的骑士数量也就是求这张图的最大独立集。 所以答案就等于 节点数 - 障碍数 - 最大匹配数。代码:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define...原创 2018-09-13 16:12:05 · 209 阅读 · 0 评论 -
UVA11419 SAM I AM
题目:SAM I AM(我是后缀自动机)思路:二分图最小点覆盖问题。即把行和列看做点,点看做边,跑最小点覆盖(二分图最大匹配)。输出路径有点麻烦。根据匈牙利算法的性质可以知道,每个没有被匹配的端点都至少和一个已经匹配了的点相连。所以可以想到,只需要从没有匹配的横线开始找,把和它相连的纵线标记即可,然后这个被标记的纵线连接的横线就取消标记。代码:#include<bits/st...原创 2019-01-06 21:57:56 · 168 阅读 · 0 评论