zoukankan      html  css  js  c++  java
  • [APIO2020]有趣的旅途

    注意到第一个点是可以钦定的。
    那么我们考虑在重心的子树里反复横跳。
    每次选择不同子树里的深度最大的点。
    在同一颗子树里可能会在lca处出现问题。
    那么我们选择重心,要考虑到会不会出现一颗子树不够选的操作。
    依照旭爷的证明,在一个时刻一定会出现:
    大的那颗子树的大小等同于另外两颗的子树和。
    这样我们只要按两颗子树的操作选即可。

    然后我们要考虑一些操作:

    找到重心:询问在0下的子树大小,选择(n-siz leq lfloor frac{n}{2} floor)(siz)最小当做重心,这个显然(n)
    找到深度,这个显然(n)次。
    找到自己在哪颗子树,那么我们考虑按子树大小降序考虑,依照(dep)和距离考虑,找到了就(dep),那么这样是(a * 1 + b * 2 + c * 3 leq 2*n)

    所以可以卡过。

  • 相关阅读:
    简单工厂设计模式
    MVC备忘
    在MVC后台代码中想实现删除时弹出"确认删除"效果
    集合
    嵌套
    整理 补课内容
    百鸡百钱
    ////输入一个100以内的数,判断是不是正整数;
    课后题 5 6
    课后题3,4
  • 原文地址:https://www.cnblogs.com/dixiao/p/15176413.html
Copyright © 2011-2022 走看看