CF1981F Turtle and Paths on a Tree

题目大意:

有一棵有点权的二叉树,你要画出来若干个路径,使得每条边恰好被覆盖了一次。
这个总权值为每条路径连接的点的点权 MEX。
问这个总权值最小是多少。
\(n \le 2.5 \times 10^4\)

解题思路:

显然我们先要有一个保证正确性的时间复杂度尽可能低的算法。
考虑由于每条边要被覆盖一次,设 \(dp_{i,j}\) 表示考虑完 \(i\) 子树的了,向外延申的端点是 \(j\),的最小的和。

这个转移是 \(O(n^2)\) 的,但是发现 \(n\) 等于 \(2.5 \times 10^4\) 时时空都不对。
考虑改变状态,注意到这个 MEX 是不会太大的,因为他一旦太大完全可以拆成两个从而使得 MEX 最小。

\(dp_{i,j}\) 表示 \(i\) 子树内的,往外连的边的 MEX 为 \(j\) 的和的最小值。
这是并不容易维护的,因为你想合并两个集合的 MEX 直接合并 MEX 并不能做。

考虑这个 MEX 的定义,注意利用这个最小化的性质,而 MEX 与之相应的是最小的没出现的数。
那么我们只要保证没出现,就一定能取到最小值,其他的我们并不关心。

那么钦定 \(i\) 连出去的路径不能有 \(x\),这样就可以转移了。
而我们的第二维是 \(O(\frac{n}{\ln n})\) 级别的,这样就是 \(O(\frac{n^2}{\ln n})\)

考虑每个数对他的限制,假设是 \(x\),那么把 \(x\) 相邻的两个最大贡献 \(4\),除掉他最多 \(x\)
加起来是 \(O(n \ln n)\) 级别的。
所以链长最大 \(O(n \ln n)\),std 说是 3863。

考虑构造出来第二维的上限,首先因为我们是若干条链,极限情况肯定整棵树都是一条链。
对于每个数 \(x\),考虑他对

posted @ 2026-03-03 21:54  positive_deviation  阅读(1)  评论(0)    收藏  举报