P10471 Trie
给定 \(a_1 \sim a_n\),求
\[\max_{1 \leq i < j \leq n} a_i \oplus a_j \]
01 Trie 典。维护时将 \(a_i\) 作为二进制串塞入 Trie。
由于异或有自反性,问题可以转换为
\[\max_{1 \leq i \leq n} \color{red} \max_{1 \leq j \leq n} a_i \oplus a_j
\]
对 \(1 \leq i \leq n\) 进行红色部分的求解,再取最大即可。节点将传到第 \(j\) 层时,尽量按与 \(a_i\) 的第 \(j\) 位相反的方向下传,以达到异或值最大的目的。
具体实现参照 代码。注意,Trie 数组不能开太小,以及 \(a_i\) 的二进制最多有 \(32\) 位。