连标题都不想搞了,单纯的记录一下树上主席书的学习过程。
这个可以干什么呢?快速的找到一条路径的的信息。
思路:([x])表示根节点到(x)路径上的点的信息的主席树,构建方式为每个点建链,从上至下合并,即(merge([x],[fa[x]]))即可。
然后路径的主席树则为:([x]+[y]-[lca(x,y)]-[fa[lca(x,y)]])。
事实上:之前的肥宅快乐主席树好SB的名字的树上第k小练习就是如此。
当然,还有一道练习:[SCOI2015]情报传递,也可以用树上主席树做。
为了不太水,聊聊带修改的问题?
额,口胡一个吧,考虑(DFS)序,即进去放一次,回溯放一次的数组,这样每个点会在数组中出现两次,然后不难发现,前面一次为+,后面一次为(-),([1,i])刚好就是(i)到根节点的信息,然后转化为序列的带修改,然后类似维护即可。