• NOIP2012BLOCKADE贪心思想证明


    NOIP2012BLOCKADE贪心思想证明

    这道题的做法是二分时间并检验这个时间是否可行。检验的方法要用到贪心思想。

    1. 对于不能到根结点的军队应该尽量向根结点走。
    2. 如果军队A能走到根结点但到根结点后剩余的时间不够返回根结点的儿子B,应该让军队A守B。
    3. 否则把军队A加入优先队列,用剩余时间小的军队匹配到根结点距离小的儿子。

    证明:

    1. 一个军队可控制自己和以自己为根的子树。越向上走控制的结点越多。
    2. 把这个军队记作A,如果不这样,我们必须要用另一个到达根结点的军队,记作C,因为A剩余时间小于到B的时间,如果用C,则C剩余的时间大于到B的时间,这样交换以后在优先队列里的军队的剩余时间变小,不如不换更优。
    3. 假设军队A剩余的时间比军队B的多,则A能到的结点包扩所有B能到的结点,所以可能存在一些结点A能到但B不能到,所以一个结点B能到我们就不用A。
  • 相关阅读:
    Unix环境中的刷新
    C++ 的类型转换方法
    系统对信号的三种处理方式
    进程原语与线程原语的比较
    C和C++对带空参数列表的函数声明的不同处理
    函数指针
    字符串化的预处理器特征
    调试技巧
    信号产生的条件
    结构体大小问题
  • 原文地址:https://www.cnblogs.com/JebediahKerman/p/5999903.html
Copyright © 2020-2023  润新知