Description
Solution
Lemma
若答案不超过 v v v,当且仅当可以将 a a a 中的数两两配对,使得每一个配对 ( x , y ) (x,y) (x,y) 均满足 x ⊕ y = v x \oplus y = v x⊕y=v。
Prove
假设已经完成了配对,且 n n n 个配对分别为 ( a x 1 , a y 1 ) ( a x 2 , a y 2 ) , ⋯ , ( a x n , a y n ) (a_{x_1},a_{y_1})(a_{x_2},a_{y_2}),\cdots,(a_{x_n},a_{y_n}) (ax1,ay1)(ax2,ay2),⋯,(axn,ayn)。
Bob \text{Bob} Bob 可以采取下面的策略: 令当前 Alice \text{Alice} Alice 所选择的位置为 p p p,那么 Bob \text{Bob} Bob 就相应地选择与 p p p 在同一个配对中的位置,从而答案不超过 v v v。
若未能完成配对呢?为方便叙述,令完成的 n − 1 n-1 n−1 组配对分别为 ( a x 1 , a y 1 ) ( a x 2 , a y 2 ) , ⋯ , ( a x n − 1 , a y n − 1 ) (a_{x_1},a_{y_1})(a_{x_2},a_{y_2}),\cdots,(a_{x_{n-1}},a_{y_{n-1}}) (ax1,ay1)(ax2,ay2),⋯,(axn−1,ayn−1),剩下的两个位置为 x n x_n xn 与 y n y_n yn 且它们不能完成配对。
Alice \text{Alice} Alice 可以采取如下策略: 选择存在于至少一个配对中的 a p a_p ap。这样,在最后一轮中剩下的两个数必然是 x n , y n x_n,y_n xn,yn,答案就大于 v v v 了。
从而,我们证明了,能完成配对是答案不超过 v v v 的充分必要条件。
按位考虑。
令当前考虑到了第 L L L 位。我们将当前的序列分成两个集合 S , T S,T S,T, S S S 中的元素的第 L L L 位为 0 0 0, T T T 中的元素的第 L L L 位为 1 1 1。令这两个集合的大小分别为 ∣ S ∣ , ∣ T ∣ |S|,|T| ∣S∣,∣T∣,则必然有 ∣ S ∣ + ∣ T ∣ ≡ 0 ( m o d 2 ) |S|+|T| \equiv 0 \pmod 2 ∣S∣+∣T∣≡0(mod2)。
若 ∣ S ∣ , ∣ T ∣ |S|,|T| ∣S∣,∣T∣ 都是偶数,那么我们可以将 S S S 中的元素两两配对,再将 T T T 中的元素两两配对。显然,此时不存在跨越 S , T S,T S,T 的配对,从而答案的第 L L L 位为 0 0 0。
若 ∣ S ∣ , ∣ T ∣ |S|,|T| ∣S∣,∣T∣ 都是奇数,我们依然尽可能地内部配对,但无论怎样,总会在 S , T S,T S,T 中分别遗留下一个数 u , v u,v u,v。此时答案的第 L L L 位为 1 1 1。
在对第 x x x 位(最高位)进行考虑过后,我们对于 S , T S,T S,T 分别分治即可,并令 x : = x − 1 x:=x-1 x:=x−1。现在关键在于,对于两个集合 S , T S,T S,T,如何分别挑出一个数来,使得它们的异或最小。
建立 Trie \text{Trie} Trie 树即可。
总复杂度 O ( n L 2 ) O(nL^2) O(nL2)。