20261109-kdr 杂题选讲

Diu 怎么选的全是猎奇图论题一道都不会呜呜呜

QOJ 14810. Trajan 算法

首先错误的代码只会让 \(\mathrm{low}_v\) 更小,那只用考虑将割点误判成不是割点的情况。

这题启发我们跳出 dfs 树,从点双的角度考虑,\(u\) 是割点等价于其存在于 \(\ge 2\) 个点双中。设 \(\mathrm{father}_u\) 所在的点双为 \(B_0\)。\(u\) 的儿子所在的点双分别为 \(B_1,B_2,\dots,B_k\),这些点双能否返祖到的最高点只能是 \(u\)。

进一步分析可以发现,不合法的情况是:

  • \(u\) 在 \(B_0\) 中存在返祖边,这样可以造成 \(\mathrm{low}_u<\mathrm{dfn}_u\)。
  • 并且对于所有 \(B_i\) 都存在某个点 \(w_i\) 有一条返祖边恰好到达 \(u\),这样错误的继承了 \(\mathrm{low}_u\),造成 \(\mathrm{low}_{v_i}=\mathrm{low}_u<\mathrm{dfn}_u\)。

整理上述条件,不难发现可以简洁刻画成:点 \(u\) 的所有临边都不是割边。因此点 \(u\) 合法的条件就是:

点 \(u\) 本身是一个割点,并且其任意临边都不是割边。

直接在正确的 tarjan 上改一下就行了。时间复杂度线性。

QOJ 23127. Valid Assignment

显然存在奇环则无解。故只考虑二分图。对图进行黑白染色,染的颜色可以看成奇偶性。

\(0\) 是比较特殊的,不妨考虑最终有哪些点的权值是 \(0\)。我们发现关键性质:

每个点赋权值的方案被权值为 \(0\) 的点集唯一确定,等于从权值为 \(0\) 的所有点开始跑 bfs 得到的最短距离。

用归纳法不难证明。权值为 \(1\) 的点一定是权值为 \(0\) 的所有点的邻点,否则如果有 \(1\) 的周围只能全都是 \(2\) 导出矛盾。进一步的,权值为 \(k\) 的点一定是权值为 \(k-1\) 的点周围的未扩张点。因此每个点的权值就是从所有权值为 \(0\) 的点开始跑 bfs 得到的最短距离。并不是所有 \(0\) 集合都能满足条件,最短路只能保证相邻点 \(|d_u-d_v|\le 1\),如果有 \(d_u=d_v\) 也是不合法的。在黑白染色后的图上考虑,如果选择的 \(0\) 集合中有异色点一定可以导出中间两点 \(d\) 的奇偶性相同,因此选择的 \(0\) 集合要么全部来自白色点要么全部来自黑色点,答案就是 \((2^{\mathrm{white}}-1)+(2^{\mathrm{black}}-1)\)。

QOJ 14506. 木林森

点边容斥。刻画【点集 \(S\) 在 \(T\) 中的导出子图是一棵树】的一种方式是【所有 \(u\in S,v\in S\) 且 \((u,v)\in T\) 的边数恰好有 \(|S|-1\) 个】。进一步的,由于 \(T\) 本身只是一棵数,这个个数也不会超过 \(|S|-1\),也就是 \(\sum\limits_{u\in S,v\in S} [(u,v)\in T]\le |S|-1\),那么我们只需要最大化 \(\sum_S\sum\limits_{u\in S,v\in S} [(u,v)\in T]\) 的值,其一定不会超过 \(\sum_S |S|-1\),并且取到上界时的 \(T\) 就是一组合法解,否则一定无解。对着这个柿子建图即可,无序点对 \((u,v)\) 的边权定义为 \(\sum_S [u\in S\wedge v\in S]\),跑这个图的最大生成树即可。有用的边只有 \(O(mk^2)\) 条,直接暴力建图跑 Kruskal 即可,时间复杂度 \(O(mk^2\log (mk^2))\),瓶颈在排序。

posted @ 2026-11-09 20:28  STDJCY  阅读(5)  评论(0)    收藏  举报