#P12420. 【MX-X12-T3】「ALFR Round 5」变换

【MX-X12-T3】「ALFR Round 5」变换

题目背景

原题链接:https://oier.team/problems/X12C

题目描述

本题有 TT 组测试数据。

有一个长度为 nn 的非负整数序列 aa 和两个参数 m,km,k

你可以对序列 aa 进行任意次数的操作,对于每次操作,你都需要:

  • 选取一个非负整数 xx 使得 x & m=xx \ \& \ m = x,选取一个下标 i[1,n]i \in [1,n],将 aiai  xa_i \gets a_i \ | \ x,然后你需要将 mmxm \gets m - x 或者花费 kk 的代价使得 mm 不变。

记你花费的代价为 ss,你需要求出 (i=1nai)s(\oplus_{i=1}^{n} a_i) - s 的最大值。

其中 | 代表按位或运算,&\& 表示按位与运算,\oplus 表示按位异或运算。

输入格式

本题有多组测试数据,第一行输入一个整数 TT,表示数据组数。对于每组数据:

  • 第一行,三个非负整数 n,m,kn,m,k
  • 第二行,nn 个非负整数 a1,,ana_1, \ldots, a_n

输出格式

对于每组数据,输出一行一个整数表示你的答案。

1
1 2 0
1
3
3
7 354 480097
1 794 0 19 45 45 1
5 109588 312
1 16 34 375 47
1 333 0
646640
875
109951
646653

提示

【样例解释 #1】

进行操作 i=1i = 1x=2x = 2,然后将 a1a1  2a_1 \gets a_1 \ | \ 2,然后选择花费 k=0k = 0 的代价将 mm 不变,在此之后 m=2m = 2,容易发现之后的所有操作不会将答案变大,因此最大值为 a1s=30=3a_1 - s = 3 - 0 = 3

【数据范围】

本题使用捆绑测试。

对于 100%100\% 的数据,1T1061 \le T \le 10^61n,n1061 \le n,\sum n \le 10^60ai,m,k1090 \le a_i,m,k \le 10^9

子任务编号 nn \le mm \le kk \le aia_i \le 特殊性质 分值
11 10910^9 10910^9 10910^9 1111
22 10610^6 00 77
33 10910^9 00 1717
44 10910^9 00 1212
55 1010 10610^6 T=1T = 1 1313
66 10310^3 1717
77 10610^6 10910^9 2323