CF1763A.Absolute Maximization

传统题 时间 2000 ms 内存 256 MiB 3 尝试 1 已通过 1 标签

Absolute Maximization

题目描述

给定一个长度为 nn 的数组 aa。你可以进行如下操作若干次(也可以一次都不进行):

  • 选择 ii、jj、bb:交换 aia_i 和 aja_j 的二进制表示中的第 bb 位。

请你求出 max⁡(a)−min⁡(a)\max(a) - \min(a) 的最大可能值。

在二进制表示中,位从右(最低位)到左(最高位)编号。假设任意二进制表示的开头都有无限多个前导零。

例如,对于 4=10024=100_2 和 3=1123=11_2,交换第 00 位后,得到 1012=5101_2=5 和 102=210_2=2。交换第 22 位后,得到 0002=0000_2=0 和 1112=7111_2=7。

这里,max⁡(a)\max(a) 表示数组 aa 的最大元素,min⁡(a)\min(a) 表示数组 aa 的最小元素。

xx 的二进制表示是 xx 用 22 进制表示的结果。例如,99 和 66 的二进制分别为 10011001 和 110110。

输入格式

第一行包含一个整数 tt(1≤t≤1281 \le t \le 128),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn(3≤n≤5123 \le n \le 512),表示数组 aa 的长度。

每个测试用例的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(0≤ai<10240 \le a_i < 1024),表示数组 aa 的元素。

保证所有测试用例中 nn 的总和不超过 512512。

输出格式

对于每个测试用例,输出一个整数,表示 max⁡(a)−min⁡(a)\max(a) - \min(a) 的最大可能值。

说明/提示

在第一个样例中,可以证明不需要进行任何操作,max⁡(a)−min⁡(a)\max(a) - \min(a) 的最大值为 1−0=11 - 0 = 1。

在第二个样例中,无法通过操作改变数组,max⁡(a)−min⁡(a)\max(a) - \min(a) 的最大值为 5−5=05 - 5 = 0。

在第三个样例中,初始 a=[1,2,3,4,5]a = [1, 2, 3, 4, 5],可以进行一次操作,选择 i=2i = 2,j=5j = 5,b=1b = 1。此时数组变为 a=[1,0,3,4,7]a = [1, 0, 3, 4, 7]。可以证明,任何进一步的操作都无法得到更优的答案,因此答案为 max⁡(a)−min⁡(a)=7−0=7\max(a) - \min(a) = 7 - 0 = 7。

由 ChatGPT 4.1 翻译

样例

4
3
1 0 1
4
5 5 5 5
5
1 2 3 4 5
7
20 85 100 41 76 49 36
1
0
7
125

在线编程 IDE

建议全屏模式获得最佳体验