CF1696A.NIT orz!

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

NIT orz!

题目描述

NIT,这位聪明人,是新来的!成千上万的人排队向他致敬。为了让他的“致敬者”们娱乐一下,NIT 决定让他们解决以下与 or⁡z \operatorname{or} z 有关的问题。你也能解决这个问题吗?

给定一个 nn 个整数的 11 下标数组 aa,以及一个整数 zz。你可以进行如下操作任意次(可能为零次):

  • 选择一个正整数 ii,满足 1≤i≤n1\le i\le n。然后,同时将 aia_i 设为 aior⁡za_i\operatorname{or} z,并将 zz 设为 aiand⁡za_i\operatorname{and} z。换句话说,设 xx 和 yy 分别为当前 aia_i 和 zz 的值。则将 aia_i 设为 xor⁡yx\operatorname{or}y,将 zz 设为 xand⁡yx\operatorname{and}y。

这里的 or⁡ \operatorname{or} 和 and⁡ \operatorname{and} 分别表示按位或和按位与操作。

请你求出,经过任意次操作后,数组 aa 中最大值的最大可能值。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1001 \le t \le 100),表示测试用例的数量。每组测试用例的描述如下。

每组测试用例的第一行包含两个整数 nn 和 zz(1≤n≤20001\le n\le 2000,0≤z<2300\le z<2^{30})。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(0≤ai<2300\le a_i<2^{30})。

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

输出格式

对于每组测试用例,输出一个整数,表示该问题的答案。

说明/提示

在样例的第一个测试用例中,一种最优的操作序列如下:

  • 对 i=1i=1 进行操作。此时 a1a_1 变为 3or⁡3=33\operatorname{or}3=3,zz 变为 3and⁡3=33\operatorname{and}3=3。
  • 对 i=2i=2 进行操作。此时 a2a_2 变为 4or⁡3=74\operatorname{or}3=7,zz 变为 4and⁡3=04\operatorname{and}3=0。
  • 对 i=1i=1 进行操作。此时 a1a_1 变为 3or⁡0=33\operatorname{or}0=3,zz 变为 3and⁡0=03\operatorname{and}0=0。

经过这些操作后,序列 aa 变为 [3,7][3,7],其中最大值为 77。可以证明,aa 中的最大值不可能超过 77,所以答案是 77。

在样例的第四个测试用例中,一种最优的操作序列如下:

  • 对 i=1i=1 进行操作。此时 a1a_1 变为 7or⁡7=77\operatorname{or}7=7,zz 变为 7and⁡7=77\operatorname{and}7=7。
  • 对 i=3i=3 进行操作。此时 a3a_3 变为 30or⁡7=3130\operatorname{or}7=31,zz 变为 30and⁡7=630\operatorname{and}7=6。
  • 对 i=5i=5 进行操作。此时 a5a_5 变为 27or⁡6=3127\operatorname{or}6=31,zz 变为 27and⁡6=227\operatorname{and}6=2。

由 ChatGPT 4.1 翻译

样例

5
2 3
3 4
5 5
0 2 4 6 8
1 9
10
5 7
7 15 30 29 27
3 39548743
10293834 10284344 13635445
7
13
11
31
48234367

在线编程 IDE

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