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\) 位。

posted @ 2024-07-12 11:23  Carrot-Meow~  阅读(6)  评论(0)    收藏  举报