zoukankan      html  css  js  c++  java
  • CF1578J Just Kingdom

    考虑一个点被填满则他需要从其父亲得到\(q_u = \sum_{v = u\ or\ v \in son_u}m_v\)

    那么考虑如何这样操作。

    我当时world final做的时候,是从上往下遍历,此时有若干分数流下下方,然后就疯狂的wa。

    image

    那么我们考虑从下往上做,考虑如何从儿子调整到父亲。

    我们发现如果儿子有 \(x\) 这样的流,那么其他每个儿子都有 \(\min {(x,q_u)}\)

    那么其有父亲有\(\sum \min{(x,q_u)}\)流下来。

    接下来是比较有关键的trick。

    我们发现如果当时这个点需要\(x\)中,\(x > \max_{u\ is\ brother\ of\ now}{(q_u)}\)那么其往上父亲的需求量固定为 \(\sum q_u\)

    否则我们发现其一定有一个或多个儿子往上的贡献为\(x\).

    那么此时的\(x\)会翻倍或更大。

    因为最大的答案一定是\(\sum all\)

    那么这个一条链上会翻倍的情况最多只有\(log\)次。

    那么我们倍增记录兄弟的最大值,\(\sum q_u\)

    即可 \(O(nlogn(logn + log(\sum all)))\)

  • 相关阅读:
    1-6.webpack对字体图标和图片的处理
    1-5.Webpack对Html模板处理
    1-4.Webpack对样式的处理
    1-3.Webpack对脚本的处理
    1-2.Webpack初始化
    1-1.mmall电商项目搭建
    Java 随心笔记11
    Java 随心笔记10
    Java 随心笔记9
    Java 随心笔记8
  • 原文地址:https://www.cnblogs.com/dixiao/p/15624962.html
Copyright © 2011-2022 走看看