#A0231. 异或和

异或和

RR 有一个长度为 nn 的非负整数序列 a1,a2,...,ana_1, a_2, . . . , a_n

定义一个区间 [l,r](1lrn)[l, r] (1 ≤ l ≤ r ≤ n) 的权值为 al,al+1,...,ara_l, a_{l+1}, . . . , a_r 的二进制按位异或和,即 alal+1ara_l \oplus a_{l+1} \oplus \cdots \oplus a_r,其中 \oplus 表示二进制按位异或。

XX 给了小 RR 一个非负整数 kk

XX 希望小 RR 选择序列中尽可能多的不相交的区间,使得每个区间的权值均为 kk

两个区间 [l1,r1],[l2,r2][l_1, r_1], [l_2, r_2] 相交当且仅当两个区间同时包含至少一个相同的下标,即存在 1in1 ≤ i ≤ n 使得 l1ir1l_1 ≤ i ≤ r_1l2ir2l_2 ≤ i ≤ r_2

例如,对于序列 [2,1,0,3][2, 1, 0, 3],若 k=2k = 2,则小 RR 可以选择区间 [1,1][1, 1] 和区间 [2,4][2, 4],权值分别为 22103=21 \oplus 0 \oplus 3 = 2;若 k=3k = 3,则小 RR 可以选择区间 [1,2][1, 2] 和区间 [4,4][4, 4],权值分别为 12=31 \oplus 2 = 333

你需要帮助小 RR 求出他能选出的区间数量的最大值。

输入格式

输入的第一行包含两个非负整数 n,kn, k,分别表示小 RR 的序列长度和小 XX 给小 RR 的非负整数。

输入的第二行包含 nn 个非负整数 a1,a2,...,ana_1, a_2, . . . , a_n,表示小 RR 的序列。

输出格式

输出一行一个非负整数,表示小 RR 能选出的区间数量的最大值。

数据范围

对于所有测试数据,保证:

  • 1n5×1050k<2201 ≤ n ≤ 5 × 10^5,0 ≤ k < 2^{20}
  • 对于所有 1in1 ≤ i ≤ n,均有 0ai<2200 ≤ a_i < 2^{20}

QQ截图20251111095739.png

特殊性质 AA:对于所有 1in1 ≤ i ≤ n,均有 ai=1a_i = 1
特殊性质 BB:对于所有 1in1 ≤ i ≤ n,均有 0ai10 ≤ a_i ≤ 1
特殊性质 CC:对于所有 1in1 ≤ i ≤ n,均有 0ai2550 ≤ a_i ≤ 255

输入样例1:

4 2
2 1 0 3

输出样例1:

2

样例1解释

RR 可以选择区间 [1,1][1, 1] 和区间 [2,4][2, 4],异或和分别为 22103=21 ⊕ 0 ⊕ 3 = 2

可以证明,小 RR 能选出的区间数量的最大值为 22

输入样例2:

4 3
2 1 0 3

输出样例2:

2

样例2解释

RR 可以选择区间 [1,2][1, 2] 和区间 [4,4][4, 4],异或和分别为 12=31 ⊕ 2 = 333

可以证明,小 RR 能选出的区间数量的最大值为 22

输入样例3:

4 0
2 1 0 3

输出样例3:

1

样例3解释

RR 可以选择区间 [3,3][3, 3],异或和为 00

可以证明,小 RR 能选出的区间数量的最大值为 11

注意:小 RR 不能同时选择区间 [3,3][3, 3] 和区间 [1,4][1, 4],因为这两个区间同时包含下标 33