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