【省选模拟】20/06/15_子树

  • 线段树维护同色集合最远点,再用一棵线段树维护颜色区间集合最远点,复杂度【省选模拟】20/06/15_线段树_02,​​【省选模拟】20/06/15_线段树_03

【省选模拟】20/06/15_子树_04

  • 考虑一个点的【省选模拟】20/06/15_线段树_05的值是其子树深度最大值,我们需要动态维护深度最大值
    将直径中点作为根,将一个点定为根相当于将其到根的路径上的点的值改为到直径的某个端点的距离
    相当于一个点有两个权值,需要区间切换为另一种,用线段树维护即可,​​【省选模拟】20/06/15_线段树_03

【省选模拟】20/06/15_子树_07

  • 神仙【省选模拟】20/06/15_子树_08
  • 注意到若要将【省选模拟】20/06/15_权值_09运走,【省选模拟】20/06/15_权值_09之前的一定全部运走,考虑设计状态【省选模拟】20/06/15_权值_11表示到【省选模拟】20/06/15_权值_09,过了【省选模拟】20/06/15_子树_13小时,花费的最小代价,同时注意到处理【省选模拟】20/06/15_权值_09的时候,前【省选模拟】20/06/15_子树_15个点可能的权值只可能是【省选模拟】20/06/15_权值_16【省选模拟】20/06/15_线段树_17
    记录【省选模拟】20/06/15_线段树_18表示上述两种状态,同时发现需要设计【省选模拟】20/06/15_子树_19表示在【省选模拟】20/06/15_线段树_20分时,前【省选模拟】20/06/15_子树_15个点均为【省选模拟】20/06/15_权值_22的最小花费,考虑转移
    当当前点没有爆时,可以直接从【省选模拟】20/06/15_子树_23转移,同时【省选模拟】20/06/15_权值_24
    枚举【省选模拟】20/06/15_权值_09之前最后一次被经过的时间【省选模拟】20/06/15_子树_26
    首先需要花费【省选模拟】20/06/15_线段树_27的费用将其清零
    然后我们可以通过若干次操作将【省选模拟】20/06/15_权值_09减小使得它可以渡过剩余的【省选模拟】20/06/15_权值_29小时,次数的下界是
    【省选模拟】20/06/15_线段树_30
    接着需要花费【省选模拟】20/06/15_权值_31次使前面的点渡过【省选模拟】20/06/15_子树_13个小时
    同时【省选模拟】20/06/15_子树_33,​​【省选模拟】20/06/15_线段树_03