随笔分类 - 5.08.0 二分图
摘要:```cpp include include include include include include using namespace std; const int MAXN=5005,MAXM=50005; int init(){ int rv=0,fh=1; char c=getchar(
阅读全文
摘要:二分图带权最小匹配(朴素) 只要换几个不等号的方向就行,不需要变换权值的正负 cpp include include include include include using namespace std; int n,m,wei[105][105],lx[105],ly[105],match[10
阅读全文
摘要:二分图带权最大匹配的KM算法(朴素版) cpp include include include include include using namespace std; int init(){ int rv=0,fh=1; char c=getchar(); while(c'9'){ if(c=='
阅读全文
摘要:二分+二分图多重匹配 辣鸡ACM式读入 对于这种奇葩的读入方法,还是老老实实的用scanf吧 cpp include include include include include define RST(a) memset((a),0,sizeof((a))) using namespace std
阅读全文
摘要:二分图多重匹配 改进版的匈牙利,加入了一个cnt数组作为找到增广路的标志 本题有一个重要的优化见注释 cpp include include include include include using namespace std; int init(){ int rv=0,fh=1; char c=
阅读全文
摘要:DAG图上可相交最小路径覆盖 先求给定DAG的传递闭包,将任意相连的两点加入二分图中,然后就是经典的不相交最小路径覆盖 所谓传递闭包就是将DAG图中任意点间的连通关系处理出来,用Floyd即可 cpp include include include include include using nam
阅读全文
摘要:二分图求最大匹配 我们以每一个格子为边,以行和列为两个集合,那么求二分图的最大匹配数就是最多能放车的数目,那么什么是重要点呢?就是删掉后会影响最大匹配数的匹配边。 我们求出最大匹配数后,枚举匹配边,将其删掉后,从x集合的 每一个未匹配元素 出发,找增广路,如果找不到,就说明这是一个重要点。 注意:在
阅读全文
摘要:二分图行列匹配+输出路径 经典题,当且仅当一行匹配一列的时候,符合题意。 本题的难点在于如何输出路径,我们发现这个移动的过程就是将所有匹配选择排序,在选择排序时输出路径即可 cpp include include include include using namespace std; int in
阅读全文
摘要:二分图匹配求DAG图上的最小路径覆盖 应用了拆点的思想,将DAG图上的每一个点拆成二分图的x集合与y集合,对于一条有向边u v来说,我们在ux与vy之间连一条边,然后求二分图的最大匹配 DAG图上的最小路径覆盖数=DAG图上的顶点数 二分图最大匹配数. 这是路径不能重合的情况,对于路径可以重合的来说
阅读全文
摘要:二分图匹配求最小点覆盖 把两个机器作为两个集合,把每个任务当做边建图.那么所求的就是二分图的最小点覆盖. 但是最开始WA了,原因在于,题目要求的是变换的次数,也就是与0连的边需要删去. cpp include include include include include using namespa
阅读全文
摘要:二分图匹配求最小边覆盖 建图方法中的黑白染色法,题目中说信号可以覆盖相邻两个块,那么我们可以将给定的地图染成国际象棋棋盘的样子,一个黑格可以与周围的四个白格共用信号,对于城市,从每一个黑格出发,向其周围的白格连边,那么这就是一个二分图,我们的把城市抽象成了点,所以我们的目的是找到最少的边覆盖所有的点
阅读全文
摘要:建图方法 https://wenku.baidu.com/view/63c1a01655270722192ef7c3.html 性质 http://dsqiu.iteye.com/blog/1689505 前段时间系统的学习了一下二分图匹配,收获还是蛮大的,总算是把最大匹配、点覆盖、点独立、边覆盖什
阅读全文
摘要:利用二分图匹配求最大独立集 本题的边一定平行于坐标轴,且同向的线段一定不重合,这是经典的二分图建图方法,本题要求的是最大不重合的线段数,那就是求二分图的最大独立集,最大独立集=总点数 最大匹配数。 本题有一个坑点,就是输入的数据不一定有序,也就是x1不一定比x2小 cpp include inclu
阅读全文
摘要:二分图匹配的匈牙利算法 这道题,如果没有硬石头的限制,那么就与 "ZJOI 2007矩阵游戏" 完全一样,但是如果有了硬石头的限制,我们就不能将整行整列作为元素建图,我们可以以硬石头为边界,将每一行、每一列分成若干段建图,然后跑二分图匹配即可。 这里我们总结一下类似问题的特征: 1. 最优性问题或判
阅读全文
摘要:有两个约束条件的二分图匹配 我们回忆一下二分图匹配的匈牙利算法的具体流程,它是通过寻找增广路来判断最大匹配数的,我们再观察一下题目中的两个条件,只有两个条件都满足,才算找到一条增广路,所以我们可以分别寻找判断两个条件。即对两个二分图交替匹配,只有两个二分图都能找到增广路时,才算是一次匹配完成。 cp
阅读全文
摘要:这是一道二分图匹配的题 "先%dalao博客" 建图并没有什么难的,但是关键在于如何使字典序最小。 一个很显然的想法是先求出一个完美匹配,然后从x集合的第一个元素开始,如果该元素匹配的较小的一个,那么继续,如果是较小的一个,那么强制把它转换成较小的一个,然后在其之后,寻找增广路,如果能找到的话,就修
阅读全文
摘要:这竟然是一道二分图 乍一看,可能是用搜索做,但是这个数据范围,一定会T。 我们观察发现,无论怎样变换,同一行的一定在同一行,同一列的一定还在同一列。所以说,一行只能配一列。这样,我们的目标就是寻找是否存在一种变换方式,使得行数与列数一一对应,且对应数为n。 我们可以把行数和列数作为二分图的两部分,然
阅读全文
摘要:二分图匹配裸题 可以用匈牙利做,简单高效 输出具体的匹配路径时 ,直接输出match数组即可 cpp include include include include include using namespace std; int init(){ int rv=0,fh=1; char c=getc
阅读全文
摘要:最为经典的匈牙利算法 匈牙利算法应用了增广路的性质,实际上就是通过搜索可行的增广路,每搜到一条,匹配数++ 还可以应用配对的方法去理解,此算法的时间复杂度 (V E),比较慢,但是实现较为简单。 dfs版 cpp include include include include include usi
阅读全文

浙公网安备 33010602011771号