![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
匹配相关
mayaohua2003
这个作者很懒,什么都没留下…
展开
-
Codeforces gym 101173 B
先证明一个引理:在AAA中选一个点集SSS,BBB中选一个点集TTT,则V=S∪TV=S\cup TV=S∪T可被匹配覆盖,当且仅当SSS可被匹配覆盖且TTT可被匹配覆盖。必要性显然,充分性考虑找出一个覆盖SSS的匹配UUU,覆盖TTT的匹配VVV,则UUU与VVV的对称差一定是若干个偶环或链,容易调整成合法匹配。 那么现在只需要对两边分别统计了。 首先分别对两边的每个点集预处理出是否能被匹配覆盖。这可以利用Hall定理,预处理每个点集SSS的相邻点集N(S)N(S)N(S),看∣N(S)∣≥S|N(S)|原创 2020-12-25 21:29:17 · 203 阅读 · 0 评论 -
Codeforces gym 100269 H
将每个串理解为它的k−k-k−前缀和k−k-k−后缀对应字符串(区分前后缀)之间的连边,我们可以得到一个二分图。原问题变为这个二分图的最小点覆盖。 这是经典问题,直接dinic即可,最后我们选的点是残量网络中左部图与源点不连通和右部图中与源点连通的点。 时间复杂度为O(nklogk+n32)\mathcal O(nk\log k+n^{\frac{3}{2}})O(nklogk+n23)。 #include <bits/stdc++.h> #define inf 0x3f3f3f3f #de原创 2020-12-24 11:58:56 · 190 阅读 · 0 评论 -
Codeforces Round 1284 简要题解
A. New Year and Naming 略 B. New Year and Ascent Sequence 略 C. New Year and Permutation 略 D. New Year and Conference 容易证明要判定是否存在venue-sensitive的非空子集,只需判定所有大小为222的子集。也即判定是否存在区间x≠yx\neq yx=y,使得[[sax,eax]∩[say,eay]=∅]≠[[sbx,sbx]∩[sby,eby]=∅][[sa_x,ea_x]\cap[原创 2020-07-17 11:22:50 · 383 阅读 · 0 评论 -
Codechef May Challenge 2020 简要题解
这次赛时没打,赛后补了下题目,被最后一题打爆,特意学了一波相关姿势。 Triple Sort 略 Chef and Bitwise Product 略 Sorting Vases 显然MMM个交换的意义就是将位置划分为若干等价类。那么可以将最初的每个数iii写成(ui,vi)(u_i,v_i)(ui,vi)的形式,代表一开始在等价类uiu_iui,最后要到等价类viv_ivi。 考虑将数字间的交换当做一条边,那么得到的每个弱连通分量需要满足每个等价类在uuu中出现次数等于在vvv中出现次数。并且对于原创 2020-05-21 12:45:01 · 492 阅读 · 0 评论 -
[学习笔记]Tutte矩阵与FKT算法求平面图完美匹配数
第一篇学习笔记,之后可能会更更多这些中文资料比较匮乏,现存题目不多的算法相关的学习笔记。 FKT算法很久之前就听说过了,选择看了下网上的中文资料,然后发现仅有的一两篇博客还没有证明,于是丢掉了。最近做codechef月赛遇到了Tutte矩阵求解最大匹配相关的内容,于是学习了一波证明。于是决定自己写一篇博客,详细介绍一下这个很有意思的东西,介绍的过程会按我个人的理解,可能讲的不是很严谨,轻喷。 先介绍几个完美匹配相关的概念。 对于图G=(V,E)G=(V,E)G=(V,E)(∣V∣=n|V|=n∣V∣=n为偶原创 2020-05-21 10:55:02 · 1681 阅读 · 0 评论