CF526G
CF526G
给定一棵树 \(T\),有 \(q\) 次询问,每次给定两个数 \(x,y\),在树上选出 \(y\) 条链,使得其并可以构成一个包含 \(x\) 的连通块。
边有边权,最大化连通块的边权和,强制在线。
\(n,q\le 5\times 10^5\)
Solution
问题等价于选 \(2y\) 个叶子出来,最大化链并贡献。
以 \(1\) 为根,我们发现每棵子树内的第一个被选的元素已经固定了。
基于这个观察,我们可以在子树内递归选择,并类似于归并排序来合并答案。
不难发现最后得到的结果是长链剖分的形态。
我们发现树的直径的两个端点一定有一个被选中,然后此时连通块可以认为以其为根,问题等价于以其为根选中 \(2y-1\) 个叶子使得包括了 \(x\)
- \(x\) 被选中,直接输出即可。
- \(x\) 不被选中,此时需要进行替换,不难发现用于替换的要么是排名为 \(2y-1\) 的链,要么恰好在其上面的链(用不等式分析即可)
对于第二类倍增找即可,
分别算贡献,取 \(\max\) 即可,复杂度为 \(\mathcal O(n\log n)\) 。