• CF526G


    CF526G

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

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

    (n,qle 5 imes 10^5)

    Solution

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

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

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

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

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

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

    对于第二类倍增找即可,

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

  • 相关阅读:
    hello world
    first demo
    Mac出现Operation not permitted
    java 获取一个数字中,各个数字出现的次数
    java 判断回文数字
    202001031
    20200103
    华为手机的系列
    java 反向打印一个数字
    java 生成两个数之间的素数
  • 原文地址:https://www.cnblogs.com/Soulist/p/13764624.html
Copyright © 2020-2023  润新知