CF526G

CF526G

给定一棵树 \(T\),有 \(q\) 次询问,每次给定两个数 \(x,y\),在树上选出 \(y\) 条链,使得其并可以构成一个包含 \(x\) 的连通块。

边有边权,最大化连通块的边权和,强制在线。

\(n,q\le 5\times 10^5\)

Solution

问题等价于选 \(2y\) 个叶子出来,最大化链并贡献。

\(1\) 为根,我们发现每棵子树内的第一个被选的元素已经固定了。

基于这个观察,我们可以在子树内递归选择,并类似于归并排序来合并答案。

不难发现最后得到的结果是长链剖分的形态。

我们发现树的直径的两个端点一定有一个被选中,然后此时连通块可以认为以其为根,问题等价于以其为根选中 \(2y-1\) 个叶子使得包括了 \(x\)

  1. \(x\) 被选中,直接输出即可。
  2. \(x\) 不被选中,此时需要进行替换,不难发现用于替换的要么是排名为 \(2y-1\) 的链,要么恰好在其上面的链(用不等式分析即可)

对于第二类倍增找即可,

分别算贡献,取 \(\max\) 即可,复杂度为 \(\mathcal O(n\log n)\)

posted @ 2020-10-03 16:44  Soulist  阅读(158)  评论(0编辑  收藏  举报