zoukankan      html  css  js  c++  java
  • [FJOI2018]领导集团问题

    题意

    给定带点权树,求最大的集合使得,集合内若两点为祖孙关系,孙子权值$le $祖先权值

    做法一

    (f_{u,i})(u)子树内选择(i)个点,最小值最大是多少,转移显然

    考虑对每个点维护一个可重集(S_u),降序,第(i)个点为子树内选择(i)个点,最小值的最大可能值
    合并两个子树(S_{k_1},S_{k_2}),直接合并集合即可

    考虑将(u)加入所有子树并起来的集合
    若原集合为({w_1,w_2,cdots,w_{m}})(u)可以插入(w_k)之后,充要条件为(w_ule w_k)
    考虑(u)插入或不插,若插入插在最优的地方
    ({w_1,w_2,cdots,w_{k},w_{k+1},cdots ,w_m})
    ({w_1,w_2,cdots,w_{k},w_u})
    我们知道有(w_{k+1}<w_u),则最优的情况是将集合替换为
    ({w_1,w_2,cdots,w_k,w_u,cdots,w_m})

    直接启发式合并(O(nlog^2n))

    做法二

    离散化权值
    (f_{u,i})(u)子树内最小值(ge i)时选择的最大点数
    用线段树维护差分,由于每次修改之跟(w_u)有关,子树可以直接线段树合并

  • 相关阅读:
    求树的某一层的节点最多
    快排 PAT 1101
    PAT 1098
    PAt 1099
    多项式求和
    pat 1100
    getline 函数
    数字的标准写法
    线性回归
    HTTP 中状态码 302的使用场景
  • 原文地址:https://www.cnblogs.com/Grice/p/13065739.html
Copyright © 2011-2022 走看看