
图论 -- 二分图匹配
Object_S
Java C++
展开
-
[ZJOI2009]假期的宿舍
题目地址 易错点: 判断必须写全写好. 需要dfs时再dfs,否则会把别人需要的床占掉. #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int MAXN=2000; struct Edge{ int from,to,nxt; }...原创 2019-07-14 11:09:48 · 112 阅读 · 0 评论 -
AW378 骑士放置
题目地址 易错点: 八倍开边,我真的没有开挂. 只有坐标不越界的点集才是好同志. 支持相互match这个一定要好评. #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int MAXN=120*120; int dx[8]={-2,-2,...原创 2019-07-26 16:37:04 · 211 阅读 · 0 评论 -
AW373 車的放置
题目地址 易错点: 可以想到,只有对角线能够放車. 通过"对角线"这一题设条件,可以联想到行与列的二分图匹配. 这种类型的二分图匹配不一定要用邻接表,在每一行的dfs过程中可以直接遍历所有列并尝试匹配. #include<cstdio> #include<iostream> #include<cstring> using namespace std...原创 2019-07-22 17:46:48 · 141 阅读 · 0 评论 -
AW372 棋盘覆盖
题目地址 易错点: 可以双向加边这个一定要赞一个. 在这种一次匹配则两个对象都被对方匹配上的题目中,应当在dfs成功时设置两个对象的match值为对方,即match[u]=v,match[v]=u. #include<cstdio> #include<iostream> #include<cstring> using namespace std; c...原创 2019-07-22 16:30:20 · 140 阅读 · 0 评论 -
P1129 [ZJOI2007]矩阵游戏
题目地址 易错点: 仔细思考可以发现,对角线上都有黑点等价于每一行都有起码一列与之对应。因此,对于每个黑点,将黑点所在行与所在列连边,进行二分图最大匹配即可. #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int MAXN=40010,M...原创 2019-07-22 10:40:45 · 139 阅读 · 0 评论 -
AW377 泥泞的区域
题目地址 易错点: 稳定加边请使用n*m. 点编号不重合就没必要双向设置匹配点. 写代码的时候请朴实一点. #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int N=105,MAXN=105*105; struct Edge{ in...原创 2019-07-25 21:33:48 · 257 阅读 · 0 评论 -
AW376 机器任务
题目地址 易错点: 最大匹配的题在加边时经常需要将其中一个的编号平移n个单位. 有多组数据. 注意边数上限. #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int N=550; int vis[N],match[N]; struct ...原创 2019-07-25 11:21:38 · 306 阅读 · 0 评论 -
AW375 蚂蚁
题目地址 易错点: 如果是double类型的数据,判断是否为零需要if(fabs(gap)<1e-10). 既然是double就不能使用常见的delta了,因为能更新delta不代表是最终结果. 如果要开double类型的INF可以直接用1e12. 中间值转换成double类型可以使用value*1.0. #include<cstdio> #include<...原创 2019-07-24 22:38:49 · 122 阅读 · 0 评论 -
HDU2255 【模板】KM算法
题目地址 KM算法 易错点: 配不上的话可能连机会都没有了,所以不要太天真(vb[y]=1(占有)要在配得上(gap==0,门当户对)的前提下). 没缘分的话最好就不要妄想(if(vb[y])continue;). 费用流算法 (qwq) #include<cstdio> #include<iostream> #include<cstring>...原创 2019-07-24 00:10:34 · 391 阅读 · 0 评论 -
P3386 【模板】二分图匹配
题目描述 给定一个二分图,结点个数分别为n,m,边数为e,求二分图最大匹配数 题目地址 匈牙利算法 本质上是对于每个点进行dfs,并在递归的同时不断找出新的增广路. 注意点: 需要使用vis数组并在每次dfs前清空,防止死循环. 模板里不需要加双向边. vis并不是增广成功才能设置,失败不设置一定会爆栈的. 在dfs的过程中累加ans会导致增广路全部被计入. Dinic算法 和其...原创 2019-07-10 21:56:52 · 157 阅读 · 0 评论 -
AW379 【模板】DAG最小路径点覆盖
题目地址 易错点: 需要理解DAG最小路径覆盖的实质. #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int MAXN=210; bool e[MAXN][MAXN],vis[MAXN]; int match[MAXN],n; bool ...原创 2019-07-27 22:54:46 · 198 阅读 · 0 评论