随笔分类 - C-图论-二分图匹配
摘要:Link: P2764 传送门 Solution: 基本模型 首先结论为:将每个点$v$拆成$v,v'$,有向边$edge(u,v)$改为$edge(u,v')$,建成二分图 那么$最小路径覆盖数=n-二分图最大匹配数$ 证明:匹配$(u,v')$相当于连接了$(u,v)$,连通块个数减一,想要连通
阅读全文
摘要:Link: BZOJ 3140 传送门 Solution: 挺好的一道暴力题 首先发现可以每次贪心选择宽度为1的一面,即$1*x*y,1*x*z,1*y*z$ 那么对于与该面垂直的面,相当于解决了一行/一列 于是我们可以先考虑一个二维问题: 每次选取一行/一列要耗费一个代价,询问要覆盖所有染色点需要
阅读全文
摘要:Link: BZOJ 1562 传送门 Solution: 一道比较考对$Hungry$算法理解的题目 首先可以轻松看出原序列和答案序列的对应关系,从而建出二分图匹配模型 下面的关键在于如何保证字典序最小 第一种方式是暴力逐位确定: 对于$1....n$每一位都先贪心选取字典序小的节点,判断将该边除
阅读全文
摘要:Link: P2526 传送门 Solution: 一道提示非常到位的题目 题面中强调了在两个路径相邻点间只能再去至多一个点,且每个点只计算一次贡献 于是明显可以将原题看作询问在两个不相交点集间最多能连几条边 接下来将合法边连上跑二分图匹配就好了 Tip:二分图匹配时分清$X,Y$集合以及$matc
阅读全文
摘要:Link: BZOJ 1059 传送门 Solution: 可以发现其实只要保证每行每列刚好只有一个就能确保构造出解 于是建立列集合与行集合的对应直接跑二分图匹配即可 Code:
阅读全文
摘要:Link: P1640 传送门 Solution: 可以发现这道题其实是属性值集合和装备集合的对应,且每个点只能用一次 那么就能想到二分图最大匹配,一旦不可行直接退出就行了 Tip: 1、$Hungry$算法连有向边就行了…… 2、注意左右两个集合范围不同! Code:
阅读全文
摘要:Link: BZOJ 2547 传送门 Solution: 很容易通过解可行性的单调性想到二分答案,接下来考虑如何验证解 发现一个很奇妙的条件:步兵和骑兵的个数相同 因此交换位置时不用考虑可行性,保证能完成交换(口胡证明一下就行了) 于是可以将每一次交换位置想成转变职业(不用考虑能否交换) 每一个士
阅读全文
摘要:Link: BZOJ 3571 传送门 Solution: 和 BZOJ2395 的建模完全相同,(BZOJ2395 题解传送门) 仅仅是将其中的基础问题由最小生成树改成了二分图最大完美匹配 只要将原来的Kruscal模块改为KM算法即可 Code: Review: 1、需要注意的就是最小匹配转为最
阅读全文
摘要:Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1143 Solution: 一道最长反链的模板题 由Dilworth定理可知:最小链覆盖数(偏序集能划分成的最少的全序集的个数) = 最长反链长度 其对偶定理:最长链长度 = 最小反链覆盖数
阅读全文

浙公网安备 33010602011771号