0%

【题解】CF1929E - Sasha and the Happy Tree Cutting

题目链接

https://codeforces.com/contest/1929/problem/E

题目大意

给定一颗 n 个结点的树,给定 k 条树上的路径 ai,bi。现在要对树上的一些边染色,使得 k 条路径中的每一条路径上都至少有一条边被染色,问最少染多少条边。

数据范围

  • 2n105
  • 1k20

解题思路

考虑统计每一条边被那些路径覆盖,假设覆盖第 i 边的路径集合为 Si,那就是要找到一个长度最短的序列 p1,p2,,pm 使得 SP1Sp2Spm={1,2,,k}

我们联想到了状压 dp,但发现直接 dp 复杂度是 O(n2k),是行不通的。

因为路径条数非常少,我们可以猜测本质不同的集合 Si 的个数跟 k 是一个级别的。

证明可以考虑建出这 2k 个点的虚树,由于虚树上最多只有 4k1 个结点,4k2 条边,所以最多只有 4k2 种本质不同的 Si​。

有了上面的结论我们就可以直接 O(nk) 地 dp 了。

参考代码

https://codeforces.com/contest/1929/submission/246624331