• 省选模拟三十四 题解


    T1

    假如max(a)<0的话直接把所有的a排个序贪心选择大的尽量多

    现在考虑一个正的ai对后面的影响

    维护一个大根堆,a<0就往里添,a>=0就去抵消堆顶元素

    这样新序列(堆里的元素)就可以像刚才那样做了

    T2

    先把点按权值从大到小排序

    然后枚举那个点可以选也可以不选

    前面的都已经选了

    然后在当前枚举的颜色中优先选择那些到根的路径上权值合法的

    更新答案

    因为如果要是想往小枚举的话一定要选择完当前颜色

    所以把当且颜色全部连到根上后还需要额外的考虑中间小于当且权值的点

    就是一个递归模拟

    最后k的处理也比较简单

    更新答案的时候如果连接这个前是小于k连接后大于k那么答案就是k

    否则正常更新

    T3

    发现假如选好S,T后答案一定是这条链上选一次

    其他关键点到链的链上选两次

    所以现在的问题是维护虚树的直径和权值和

    做出dfs序后权值和就是相邻两点之间的距离

    再加上首和尾之间的距离

    直径可以维护S,T

    加入一个点时用(S,x)和(T,x)更新答案

    删除不是很好办,用线段树分治解决即可

    复杂度O(nloglog)

    一个log的解法仍在学习

  • 相关阅读:
    单例设计模式
    使用JfreeChart生成统计图
    session的生命周期
    json
    struts2 ognl标签使用
    集合小结
    多线程
    内部类和匿名内部类
    模版方法设计模式
    mac中yeoman构建你的项目
  • 原文地址:https://www.cnblogs.com/AthosD/p/12386387.html
Copyright © 2020-2023  润新知