CF1763A.Absolute Maximization

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

Absolute Maximization

题目描述

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

  • 选择 iijjbb:交换 aia_iaja_j 的二进制表示中的第 bb 位。

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

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

例如,对于 4=10024=100_23=1123=11_2,交换第 00 位后,得到 1012=5101_2=5102=210_2=2。交换第 22 位后,得到 0002=0000_2=01112=7111_2=7

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

xx 的二进制表示是 xx22 进制表示的结果。例如,9966 的二进制分别为 10011001110110

输入格式

第一行包含一个整数 tt1t1281 \le t \le 128),表示测试用例的数量。

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

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

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

输出格式

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

说明/提示

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

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

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

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