zoukankan      html  css  js  c++  java
  • 快乐的一天从AC开始 | 20210703 | P2633

    题目链接

    题目就是静态询问树上路径中第K小元素(强制在线)。

    有一个非常经典的套路,就是记(g(u))表示节点(u)到根这一路径上的信息,那么(u)(v)这一条路径的信息等于(g(u) + g(v) - g(uv) - g(fuv)),其中(uv)表示(LCA(u, v))(fuv)(uv)的父节点。

    根据这一点,就可以借助树链剖分和主席树(O(n log n))的解决这一道题:树链剖分用于求解LCA(也可以用倍增等算法求),在DFS的过程中,每访问到一个新节点(u),就令其为在其父节点的基础上添加(a_u)。这样可以维护每个节点到根路径上所有元素的权值线段树。

    然后利用上面那个式子就可以完成查询操作。查询操作和静态区间第K大类似,相当于在权值线段树上二分,每次看往左子树走还是往右子树走即可。

  • 相关阅读:
    【zZ】OpenCV HOGDescriptor 参数图解
    [C]遍历目录下所有文件
    drawing
    转:基于用户投票的排名算法系列
    编码格式
    泛型
    接口
    隐藏方法不能实现多态性
    结构
    静态
  • 原文地址:https://www.cnblogs.com/zengzk/p/14965765.html
Copyright © 2011-2022 走看看