CF1696A.NIT orz!

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

NIT orz!

题目描述

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

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

  • 选择一个正整数 ii,满足 1in1\le i\le n。然后,同时将 aia_i 设为 aiorza_i\operatorname{or} z,并将 zz 设为 aiandza_i\operatorname{and} z。换句话说,设 xxyy 分别为当前 aia_izz 的值。则将 aia_i 设为 xoryx\operatorname{or}y,将 zz 设为 xandyx\operatorname{and}y

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

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

输入格式

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

每组测试用例的第一行包含两个整数 nnzz1n20001\le n\le 20000z<2300\le z<2^{30})。

第二行包含 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n0ai<2300\le a_i<2^{30})。

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

输出格式

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

说明/提示

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

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

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

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

  • i=1i=1 进行操作。此时 a1a_1 变为 7or7=77\operatorname{or}7=7zz 变为 7and7=77\operatorname{and}7=7
  • i=3i=3 进行操作。此时 a3a_3 变为 30or7=3130\operatorname{or}7=31zz 变为 30and7=630\operatorname{and}7=6
  • i=5i=5 进行操作。此时 a5a_5 变为 27or6=3127\operatorname{or}6=31zz 变为 27and6=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

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