洛谷 P6623

标签 01 trie 合并

这是一个神秘的做法。

考虑从将儿子子树的贡献加到父亲上。

Q:从儿子到父亲,如何处理 \(d + 1\) 的问题?

A:有一个神秘做法,就是从低到高01 trie,然后相当于将左右儿子交换(\(0\)\(1\)\(1\) 进位后变 \(0\)),然后递归到左儿子继续操作。最开始 \(val_x \oplus\!= val_y\),对于到达的节点(假设对应 \(c\) 个数),那么这一位 \(i\)\(c\) 个数 \(0, 1\) 全部颠倒,于是 \(val_x \oplus \!= (c \& 1) \cdot2^{i}\) 即可。

Q:如何合并两个儿子?

A:使用类似线段树合并的策略,使用 01 trie 合并,做到时间复杂度为 \(O(\text{节点个数}) = O(n \log n)\)

两个新奇的操作,全都没想到,这个做法太神奇了!!

posted @ 2025-12-22 22:14  xiehanrui0817  阅读(1)  评论(0)    收藏  举报