https://www.lydsy.com/JudgeOnline/problem.php?id=4405 这道题大概就是考场上想不出来,想出来也调不出来的题. 把每个桶拆成三个互相有边的点,每个球向它连接的桶的三个点分别连边. 0球1桶,匹配数为1:1球1桶,匹配数为2:2球一桶,匹配数为2:3球一桶,匹配数为3: 发现每种半桶的情况下匹配数都比该桶中放的球数大1,那么ans=最大匹配数-球数. 带花树找lca的时候,记得是用每个点的总父亲找.带花树的细节真是恶心人. #include<ios…
带花树模板 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int read() { int x;char c; '); +c-'; return x; } #define MN 600 #define ME 100000 #define ms(a) memset(a,0,sizeof(a)) +]; ],en,mat[MN+],nx[MN+],mk[M…
把每个筐子拆成3个,分别表示放0/1/2个,然后把这三个点两两连起来,每一个可以放在筐里的球都想这三个点连边. 这样可以发现,放0个球的时候,匹配数为1,放1个球的时候,匹配数为1,放2个球的时候,匹配数为2,放3个球的时候,匹配数为3. 所以直接把带花树的匹配数-n即可 #include<iostream> #include<cstdio> #include<cstring> #include<queue> using namespace std; con…
一般图最大匹配--带花树 问题 ​ 给定一个图,求该图的最大匹配.即找到最多的边,使得每个点至多属于一条边. ​ 这个问题的退化版本就是二分图最大匹配. ​ 由于二分图中不存在奇环,偶环对最大匹配并无影响(可以调整).所以增广路算法是可以顺利应用的. ​ 在一般图中,我们还是尝试使用BFS增广路的算法. ​ 然而一般图中还会出现奇环,在寻找增广路的时候,怎么处理奇环上的冲突? ​ 目的就是将奇环不断地缩起来(缩花),使得整个图在使用增广算法的时候不受影响,即不会经过奇环. 花 ​ 一朵花由一个奇…
[WC2016]挑战NPC(一般图最大匹配) Luogu 题解时间 思路十分有趣. 考虑一个筐只有不多于一个球才有1的贡献代表什么. 很明显等效于有至少两个位置没有被匹配时有1的贡献. 进而可以构造如下模型: 每个筐拆成三个点,三个点之间相互连边. 对于球可以匹配某个筐,将球向筐的三个点都连边. 这样一来,如果有一个筐只有不多于一个点被匹配,那么剩下的两个点可以自己匹配增加答案. 如此最终结果是 $ ans-n $ . 需要用到一般图最大匹配也即带花树. 由于答案要求输出匹配方案,所以要注意先匹…
来自FallDream的博客,未经允许,请勿转载,谢谢. 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有n个球,用整数1到n编号.还有m个筐子,用整数1到m编号. 每个筐子最多能装3个球. 每个球只能放进特定的筐子中.具体有e个条件,第i个条件用两个整数vi和ui描述,表示编号为vi的球可以放进编号为ui的筐子中. 每个球都必须放进一个筐子中.如果一个筐子内有不超过1个球,那么我们称这样的筐子为半空的. 求半空的筐子最多有多少个,以及在最优方案中,每个球分别…
Sol 这做法我是想不到\(TAT\) 每个筐子拆成三个相互连边 球向三个筐子连边 然后跑一般图最大匹配 这三个筐子间最多有一个匹配 那么显然每个球一定会放在一个筐子里,一定有一个匹配 如果筐子间有匹配,则有一个半空的筐子,因为它一定只匹配了小于等于\(1\)个球 答案为匹配数\(-n\) 使答案最大即匹配数最大 上带花树就好了 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a,…
uoj luogu bzoj sol 你可以列一个表格. 一个框子里放球的数量 0 1 2 3 对"半空框子"数量的贡献 1 1 0 0 把一个框子拆三个点.两两之间连边. 会发现,如果这三个点里一个都没有被球匹配掉,那么这三个点的最大匹配数是\(1\):如果任意一个点被一个球匹配掉了,那么剩下两个点一定可以匹配,所以最大匹配数还是\(1\):有两个点或者是三个点被匹配后最大匹配就是\(0\). 所以,按如上方式建图,每个球向它可以放进的框子对应的的三个点都连边.跑出最大匹配后输出\(…
一般图最大匹配带花树: 建图后,计算最大匹配数. 假设有一个联通块不是完美匹配,先手就能够走那个没被匹配到的点.后手不论怎么走,都必定走到一个被匹配的点上.先手就能够顺着这个交错路走下去,最后一定是后手没有路可走,由于假设还有路可走,这一条交错路,就是一个增广路,必定有更大的匹配. Game Time Limit: 1 Second      Memory Limit: 32768 KB Fire and Lam are addicted to the game of Go recently.…
[BZOJ4405][WC2016]挑战NPC(带花树) 题面 BZOJ 洛谷 Uoj Description 小N最近在研究NP完全问题,小O看小N研究得热火朝天,便给他出了一道这样的题目: 有n个球,用整数1到n编号.还有m个筐子,用整数1到m编号. 每个筐子最多能装3个球. 每个球只能放进特定的筐子中.具体有e个条件,第i个条件用两个整数vi和ui描述,表示编号为vi的球可以放进编号为ui的筐子中. 每个球都必须放进一个筐子中.如果一个筐子内有不超过1个球,那么我们称这样的筐子为半空的.…