zoukankan      html  css  js  c++  java
  • [树的直径]消防

      需要想到路径一定位于直径。

      如果发现以上规律,那么直接把直径处理出来,转化成序列问题,用单调队列跑一下就可以。

      然鹅我学识甚浅,想不通为什么。

      

      设直径长度为$d$

      则若这条路径完全不在直径上,$ans>=d/2$

      若这条路径完全在直径上,$ans<=d/2$

      若这条路径一部分在直径上,假设从$P$点离开直径指向$Q$点 (可以理解成 直径那条边过长走不动了但是可以走一条别的边)

        由于P到直径另一端的距离一定大于$PQ$,所以即使从$P$指向$Q$,减少了这部分距离,但是不会使最大距离变小

        也就是说答案不会比直接在$P$点断了更优秀

      所以可以直接在直径上找路径。

      刚才天皇说找到直径最中间的那条路径就可以(即两头未取到的两段的最大值最小)

      好像很有道理(巨)

      

      因为对于一个非最优方案来讲,它与最优方案的差距可以在:

        非优方案中的一条侧链比最优方案长。

        非优方案中两端的弃链比最优方案长。

      第一种不可能发生,因为如果最优方案没选那条很长的侧链,将会导致多延伸出一部分才能到侧链,答案更劣了

      所以最优方案=弃链最短

      

      不得不说天皇还是太巨了。

  • 相关阅读:
    docker pull 报错解决办法
    cobbler自动装机!
    centos7 日志定期清理
    【转载】python 模块
    0603 python 基础02
    0527 python 基础01
    0520 python
    160519 如何做自动化测试?
    SourceTree&Git部分名词解释
    sourceTree安装与使用
  • 原文地址:https://www.cnblogs.com/yxsplayxs/p/11454531.html
Copyright © 2011-2022 走看看