Link
真的是很不错的题目..
Solution
借鉴虚树和树分块的思想,尽量减少新树的点数,把一块看成一个整体,在新树中只记录一块的根节点。 需要把一个子树连到大树的点上,用二分查找找到所在的块,然后用主席树算出在原树对应的节点编号。 查询的时候,求出两个点所在块的,让这两个点分别跳到处于块里面的最深的祖先(自身也算)并记录路径长度,再在块内求一个,算一下路径长度就好了。
Tips
有一个构造函数的一个int64变量写成了int,怎么也搞不出来。 对拍的时候,确实造了每次的极限数据,但是查询是随机的,所以没有让这个问题暴露出来。 so,极限数据要在每个方面都极限。。
Code
1 |
|