zoukankan      html  css  js  c++  java
  • luoguP4197:Peaks(Kruskal重构树+主席树)或者(点分树+离线)

    题意:有N座山,M条道路。山有山高,路有困难值(即点权和边权)。现在Q次询问,每次给出(v,p),让求从v出发,只能结果边权<=p的边,问能够到达的山中,第K高的高度(从大到小排序)。

    思路:显然,最小化最大边权,需要先得到生成树,三种思路。

    第一种:离线+启发式合并,这里先不管。

    第二种:Kruskal重构树+主席树。 我们知道LCA处的点权路径边权就是极值,那么我们找到最远的祖先x,满足w[x]<=p,得到v的子树都是可以到达的点,现在问题就是在子树找第k大,主席树即可。 O(NlogN)

    第三种:估计还没啥人是这个做法做的,毕竟相比第二种麻烦一点。先得到最小生成树,然后得到点分树。 然后找最远的祖先x,满足原树上maxval(v->x)<=p;然后离线求,把节点和询问排序,线段树就可以搞定了。O(Nlog^2N)这个做法可以参考:luogu5311。

  • 相关阅读:
    bzoj2555-SubString
    离散对数
    xsy1436-括号游戏
    bzoj1143-祭祀
    连通分量
    bzoj3864-hdu4899-Hero meet devil
    bzoj3238-差异
    poj1065-Wooden Sticks
    多项式除法
    JavaScript 对象
  • 原文地址:https://www.cnblogs.com/hua-dong/p/11608840.html
Copyright © 2011-2022 走看看