树上主席树(无代码,单纯谈思路的一篇水文)

连标题都不想搞了,单纯的记录一下树上主席书的学习过程。

这个可以干什么呢?快速的找到一条路径的的信息。

思路: [ x ] [x] [x]表示根节点到 x x x路径上的点的信息的主席树,构建方式为每个点建链,从上至下合并,即 m e r g e ( [ x ] , [ f a [ x ] ] ) merge([x],[fa[x]]) merge([x],[fa[x]])即可。

然后路径的主席树则为: [ x ] + [ y ] − [ l c a ( x , y ) ] − [ f a [ l c a ( x , y ) ] ] [x]+[y]-[lca(x,y)]-[fa[lca(x,y)]] [x]+[y][lca(x,y)][fa[lca(x,y)]]

事实上:之前的肥宅快乐主席树好SB的名字的树上第k小练习就是如此。

当然,还有一道练习:[SCOI2015]情报传递,也可以用树上主席树做。

为了不太水,聊聊带修改的问题?

额,口胡一个吧,考虑 D F S DFS DFS序,即进去放一次,回溯放一次的数组,这样每个点会在数组中出现两次,然后不难发现,前面一次为+,后面一次为 − - [ 1 , i ] [1,i] [1,i]刚好就是 i i i到根节点的信息,然后转化为序列的带修改,然后类似维护即可。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值