【A】图论网络流

https://vjudge.net/contest/774899

最小生成树

ST 表维护并查集区间合并即可。

QOJ4218 Hidden Graph

增量构造。如果我们知道 \(\{1,2,3,\cdots,i-1\}\) 的若干个独立集的划分,那么我们对于每个独立集找到一条边,然后删去这个点。我们会额外花费独立集个数的代价,那么我们尽量少划分独立集。
发现给出的性质满足一定可以划分为 \(k+1\) 个独立集,即 \(k+1\) 染色。

CF1033E Hidden Bipartite Graph

  • 树是一个二分图。

那么如果我们找到原图的一棵生成树,即可知道每个点属于左部点还是右部点。
bfs,找到 \(u\) 到未加入点集中的边即可。

CF555E Case of Computer Network

显然关注割边,缩边双后,树上差分定向。
边双内部就是 tarjan 的时候确定即可。

CF1012E Cycle sort

考虑排列的情况?对于置换环,先把所有自环扔了。我们有以下两种方式进行还原:

  • 一次还原一个环。
  • 两次还原所有环,额外代价为置换环个数。

考虑序列?同样是我们连出一些边,\(\mathsf{ori}_i\to \mathsf{sorted}_i\),那么每个值可能有多个入边和出边。出边等于入边,那么划分出若干个环,和上面一样做。

二分图一些结论

最大匹配=最小点覆盖=n+m-最大独立集。
最小点覆盖和最大独立集是补集关系。

ExHall

二分图最大匹配=\(n+\min_{S}(|N(S)|-|S|)\),其中 \(S\) 可以为空。

偏序集

最长反链=最大独立集=最小链覆盖=n-最大匹配。

CF1630F Making It Bipartite

连出偏序集,一个点不能同时存在出边和入边。否则一定存在三元环。
拆点,\(x_{\mathsf{in}},x_{\mathsf{out}}\) 不能同时选。
若有边 \(u\to v\),那么 \(u_{\mathsf{in}}\)\(v_{\mathsf{in},\mathsf{out}}\) 不能同时选,\(v_{\mathsf{out}}\)\(u_{\mathsf{in},\mathsf{out}}\) 不能同时选。
有边:\((u_{\mathsf{in}}\to v_{\mathsf{in}}),(u_{\mathsf{in}}\to v_{\mathsf{out}}),(u_{\mathsf{out}}\to v_{\mathsf{out}})\)
还是偏序集,求最大独立集,即 n-最大匹配。

AT_agc029_f [AGC029F] Construction of a tree

\(1\) 作为根,那么其他点我们选择一个父亲,那么若 \(E_i\)\(u\in E_i\) 连边,则 \([2,n]\)\(E_{[1,n-1]}\) 应该形成完美匹配。
求出完美匹配后,从 \(S=1\) 开始,每次找到某个 \(E_x\),他存在 \(u\in E_x,u\in S\),那么可以将 \(mat_x\) 加入 \(S\),并确定这个点的父亲 \(fa_{mat_x}=u\)
那么能做到 \(S=[1,n]\) 即说明有解。否则一定无解。

QOJ10045 Permutation Recovery

由于 \(b_{a_i}=i\),那么 \(i\) 列有一个 \(a_i\),对应 \(a_i\) 列有一个 \(i\)
将第 \(i\) 列的 \(j\) 连边 \((i,j)\),每个点的度数都是 2k。我们需要将边集划分为 \(k\) 组,每组都是大小为 \(n\) 的排列。
考虑跑一个欧拉回路将边定向。然后我们可以对于边 \(u\to v\) 在二分图上链接左右部点,然后求完美匹配即可得到一个排列。去掉这些边后继续跑,找到 \(k\) 个排列即可。

AT_agc031_e [AGC031E] Snuke the Phantom Thief

考虑枚举总共偷了多少个宝石,那么我们可以求出从左往右数第 \(i\) 颗宝石的横坐标区间,同理也可以求出纵坐标。那么左部点连 x 的限制,右部点连 y 的限制跑最大费用流。复杂度 \(O(n^5)\)

P4518 [JSOI2018] 绝地反击

考虑二分,然后每次 \(i\) 可以去到圆上的一段弧。考虑一定有一种方案,使得多边形的一个点取在弧上,暴力枚举多边形的这个顶点。
那么 \(i\) 可以向一段区间连边,我们需要求一个完美匹配。
考虑 Hall 定理,我们需要找到 \(|S|>|N(S)|\) 的一个反例。
发现 \(|N(S)|\) 是多个区间时,我们把他拆开分别计算一定不会影响正确性。
考虑枚举 \(N(S)=[L,R]\),那么我们需要找到 \(\sum_{[l_i,r_i]}[[l_i,r_i]\in[L,R]]\le R-L+1\)
这个东西可以扫描线做,总复杂度 \(O(n^2\log n\log V)\)

posted @ 2025-12-15 08:00  TallBanana  阅读(9)  评论(0)    收藏  举报