zoukankan      html  css  js  c++  java
  • 杂题

    题意

    给定(n)点的带点权树,(q)次查询,给定(u,v),令(S)(u,v)路径的上点,求(sumlimits_{xin S} dis_{u,x}~or~a_x)

    做法

    (up_{i,j})(i)点往上(2^j)这条路径上以(i)为起点的询问和
    (down_{i,j})(i)点往上(2^j)这条路径上以(i)为终点的询问和
    更新就是利用(up_{i,j-1},up_{fa_{i,j-1},j-1})更新,以为这条路径分为了([0,2^{j-1}),[2^{j-1},2^j)),上半段路径前面加了一个(1),只要把格外的这个贡献算进去即可
    (down_{i,j})类似

    然后查询((u,v))
    (l=lca(u,v))(u)往上爬时用(up)计算,(l)往下走可以看作是将(u-l)翻折到(l)的祖先然后后半段贡献,两次用(down)计算即可

    题外话

    咋连联赛题都做不动了啊...

  • 相关阅读:
    js-AOP
    jQueryUI之autocomplete
    nginx安装配置
    oracle结构语法
    ajax/表单提交 多个相同name的处理方法
    ES6模块化
    docker运维
    帆软报表
    oracle锁表
    香港到大陆IPLC节点故障
  • 原文地址:https://www.cnblogs.com/Grice/p/12882592.html
Copyright © 2011-2022 走看看