AT_agc071_a [AGC071A] XOR Cross Over
题目描述
[problemUrl]: https://atcoder.jp/contests/agc071/tasks/agc071_a
有一块黑板,上面写有非负整数序列。初始时,黑板上仅写有一个长度为 $ N $ 的非负整数序列 $ A=(A_1,A_2,\dots,A_N) $。
持续进行以下操作,直到黑板上所有非负整数序列的长度均为 $ 1 $:
- 选择黑板上一个长度至少为 $ 2 $ 的非负整数序列并将其擦除。设选中的非负整数序列为 $ B=(B_1,B_2,\dots,B_n) $。接着选择一个满足 $ 1 \leq k < n $ 的整数 $ k $,计算 $ X = B_1 \oplus B_2 \oplus \dots \oplus B_k $ 和 $ Y = B_{k+1} \oplus B_{k+2} \oplus \dots \oplus B_n $。最后在黑板写入两个新的非负整数序列:$ (B_1 \oplus Y, B_2 \oplus Y, \dots, B_k \oplus Y) $ 和 $ (B_{k+1} \oplus X, B_{k+2} \oplus X, \dots, B_n \oplus X) $。
其中,$ \oplus $ 表示按位异或(bitwise XOR)运算。
在完成所有操作后,设黑板上 $ N $ 个长度为 $ 1 $ 的非负整数序列为 $ (C_1),(C_2),\dots,(C_N) $,求 $ \sum_{i=1}^{N}C_i $ 可能的最小值。
**按位异或运算的定义**
非负整数 $ A $ 和 $ B $ 的按位异或 $ A \oplus B $ 定义如下:
- $ A \oplus B $ 的二进制表示中,$ 2^k $ 位($ k \geq 0 $)的值为 $ 1 $,当且仅当 $ A $ 和 $ B $ 的二进制表示在 $ 2^k $ 位恰好有一个为 $ 1 $;否则为 $ 0 $。
例如,$ 3 \oplus 5 = 6 $(二进制表示为 $ 011 \oplus 101 = 110 $)。
一般而言,$ k $ 个非负整数 $ p_1, p_2, \dots, p_k $ 的按位异或定义为 $ (\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k) $,并且可以证明该结果与运算顺序无关。
输入格式
输入从标准输入按以下格式给出:
> $ N $
> $ A_1 $ $ A_2 $ $ \dots $ $ A_N $
输出格式
输出答案。
说明/提示
### 约束条件
- $ 1 \leq N \leq 500 $
- $ 0 \leq A_i < 2^{40} $
- 输入值均为整数
### 样例解释 #1
初始时,黑板上的序列为 $ (1,3,4,5) $。按以下步骤操作:
1. 擦除 $ (1,3,4,5) $,选择 $ k=2 $。计算得 $ X = 1 \oplus 3 = 2 $,$ Y = 4 \oplus 5 = 1 $。在黑板写入两个新序列 $ (0,2) $ 和 $ (6,7) $。
2. 擦除 $ (0,2) $,选择 $ k=1 $。黑板写入两个新序列 $ (2) $ 和 $ (2) $。
3. 擦除 $ (6,7) $,选择 $ k=1 $。黑板写入两个新序列 $ (1) $ 和 $ (1) $。
最终黑板上的四个序列为 $ (2),(2),(1),(1) $,总和为 $ 2+2+1+1=6 $。
翻译由 DeepSeek R1 完成