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

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

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

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

然后路径的主席树则为:\([x]+[y]-[lca(x,y)]-[fa[lca(x,y)]]\)

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

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

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

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

posted @ 2020-10-26 14:42  敌敌畏58  阅读(88)  评论(0编辑  收藏  举报