标签:... tree 快速 处理 最坏情况 bit $1 总结 高效
长链剖分和轻重链剖分十分相似,都是将一棵树节点的信息分成多条链的信息,但是前者是以深度剖分,后者则是以子树大小来剖分。
同时长链剖分还借鉴了$dsu\;on\;tree$的一些$trick$使得它能十分高效地合并子树信息。
破天荒地写了证明
所有链长度之和为节点数
证明:
任意一个点$k$级祖先所在长链的长度一定大于等于$k$
证明:
任意一个点跳重链到根所用的次数不超过$\sqrt n$
证明:
首先对树进行长链剖分,记录每个节点所在的链的链顶,然后按深度记下每条链中的节点和这条链的长度个数个祖先,再预处理倍增数组代表$2^k$祖先。根据性质二,我们跳到节点的大于$\frac k2$次祖先,我们可以通过之前预处理出的链顶祖先中找到$k$及祖先,感性理解分析可得,第一次跳$highbit(k)$次祖先最快,复杂度$O(1)$
总复杂度$询问次数O(nlogn)+O(询问次数)$
Updating
标签:... tree 快速 处理 最坏情况 bit $1 总结 高效
原文地址:https://www.cnblogs.com/heyujun/p/10228730.html