zoukankan      html  css  js  c++  java
  • 严格次小生成树

    码力+树论

    我用的树链剖分版。有一个结论需要记住:一个严格次小生成树只与最小生成树的一条边不同,我们考虑枚举每一条没有加入到最小生成树中的边,如果将其加入,能够影响到边的两个端点的lca(整个区域将变为一个环),所以我们要删除一条最大的边,如果最大的边与其相等,那么删除一条次大的边。以此类推,最后求出一个对原答案影响最小的增加量。

    线段树可以维护区间最大,次大值,方法就是每次查询返回一个结构体,存最大和次大,那么合并答案:

     t[s].mx=max(t[t[s].lc].mx,t[t[s].rc].mx);
     t[s].sec=max(min(t[t[s].lc].mx,t[t[s].rc].mx),max(t[t[s].lc].sec,t[t[s].rc].sec));
    

    code:我的才80分,还没调整好!

    收获:

    次小生成树类问题一定要:1、记结论
    2、将生成树建立出来,通过边的影响来求出答案,方法有倍增法和树链剖分法(LCT不会qwq)

  • 相关阅读:
    tomcat7简单优化
    java向上转型和向下转型
    字符串循环移位
    测试覆盖率问题
    悬挂指针
    标准库string的用法探讨
    野指针问题
    Clock函数用法
    配置信息写入到.ini文件中的方法
    数组指针和数组引用做参数的区别
  • 原文地址:https://www.cnblogs.com/bullshit/p/9702937.html
Copyright © 2011-2022 走看看