Atcoder Regular Contest 122 D 题解

Description

传送门

Solution

Lemma

若答案不超过 v v v,当且仅当可以将 a a a 中的数两两配对,使得每一个配对 ( x , y ) (x,y) (x,y) 均满足 x ⊕ y = v x \oplus y = v xy=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 n1 组配对分别为 ( 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),,(axn1,ayn1),剩下的两个位置为 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+T0(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:=x1。现在关键在于,对于两个集合 S , T S,T S,T,如何分别挑出一个数来,使得它们的异或最小。

建立 Trie \text{Trie} Trie 树即可。

总复杂度 O ( n L 2 ) O(nL^2) O(nL2)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值