24.2.14 题目总结
CF1572D Bridge Club
若我们贪心地从大向小选,不难发现每选择一条边至多会 ban 掉 \(2n-2\) 条边,所以只有前 \(2nk\) 大的边有用。
把这些边拉出来,跑一下二分图匹配即可。求前 \(2nk\) 大可以使用 nth_element。
使用 Dij 费用流,时间复杂度 \(O(2^nn+nk^2\log{nk})\)。
uoj461 新年的Dog划分
考虑求一棵生成树。把所有边排一起二分,第一次二分出能使图联通的最小前缀 \(i\),则 \(e_i\) 一定在生成树中。然后再二分在保留 \(e_i\) 的情况下,能使图联通的最小前缀 \(j\),则 \(e_j\) 也一定在生成树中。以此类推。次算法次数为 \(n \log {n^2}=2 n \log n\)。
注意到我们的问题其实相当于要求在一个长为 \(n^2\) 的数组上二分 \(n\) 次,考虑将数组分为 \(n\) 个块,外层扫描整块,块内二分即可,次数为 \(n \log n + 2n\)。
最后就要看我们构造出来的解是否合法,如果有同色边必然成环,断掉每一条生成树上边,判断联通性即可。若删掉某条边图依旧联通,则说明存在同色边。
总次数 \(n \log n+3n\),实际上调整块长即可通过。
P3679 [CERC2016] 二分毯 Bipartite Blanket
结论:将点集 \(S\) 按左右部分为 \(S_L,S_R\),存在一组匹配覆盖 \(S\) 当且仅当存在一组匹配覆盖 \(S_L\),且存在一组匹配覆盖 \(S_R\)。
证明的话考虑将两部分的匹配合起来,讨论一下交错链和交错环即可。
剩下的部分是简单的。对于一边的情况容易使用 Hall 定理 + 高维前缀和 判定,然后排个序,双指针或二分即可。
时间复杂度 \(O(2^nn)\)。
qoj 6508 This is not an Abnormal Team!
不妨放宽限制,跑容量上届为 \(2\) 的匹配,这样会形成若干个链或环。显然都可以拆为两个或三个匹配。但我们发现流量相同的时候链越多越优,所以可以把两条边分别设为 \((1,-inf)\) 和 \((1,0)\)。
接下来,我们发现三个匹配的特点是存在二度点,所以我们尝试最小化二度点。把第二条边设为 \((1,1)\) 即可解决问题,注意到同时长度大于三的链也不会再出现了。

浙公网安备 33010602011771号