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 完成