#B1052. [CSP-J 2025T3] 异或和

[CSP-J 2025T3] 异或和

题目描述

小 R 有一个长度为 nn 的非负整数序列 a1,a2,,ana_1, a_2, \dots, a_n。定义一个区间 [l,r][l, r] (1lrn1 \le l \le r \le n) 的权值为 alal+1ara_l \oplus a_{l+1} \oplus \dots \oplus a_r,其中 \oplus 表示按位异或。

小 X 给了小 R 一个非负整数 kk。小 X 希望小 R 选择序列中尽可能多的不相交的区间,使得每个区间的权值均为 kk。两个区间 [l1,r1][l_1, r_1][l2,r2][l_2, r_2] 相交当且仅当它们包含至少一个相同的下标,即存在 1in1 \le i \le n 使得 l1ir1l_1 \le i \le r_1l2ir2l_2 \le i \le r_2

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

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

输入格式

第一行包含两个整数 n,kn, k,分别表示序列长度和给定的目标异或值。

第二行包含 nn 个非负整数 a1,a2,,ana_1, a_2, \dots, a_n,表示序列中的元素。

输出格式

输出一行一个整数,表示最多能选出的不相交区间数量。

样例

4 2
2 1 0 3
2
4 3
2 1 0 3
2
4 0
2 1 0 3
1

样例解释

  • 样例 1:选择区间 [1,1][1,1][2,4][2,4],异或和分别为 22103=21 \oplus 0 \oplus 3 = 2,最多可选出 22 个区间。
  • 样例 2:选择区间 [1,2][1,2][4,4][4,4],异或和分别为 12=31 \oplus 2 = 333,最多可选出 22 个区间。
  • 样例 3:可以选择区间 [3,3][3,3],异或和为 00。注意 [3,3][3,3][1,4][1,4] 相交,不能同时选择,因此答案为 11

数据范围与提示

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

  • 1n5×1051 \le n \le 5 \times 10^50k<2200 \le k < 2^{20}
  • 0ai<2200 \le a_i < 2^{20}
测试点编号 nn \le kk 特殊性质
11 22 =0=0 A
22 1010 1\le 1 B
33 10210^2 =0=0 A
4,54,5 ^ 1\le 1 B
686 \sim 8 255\le 255 C
9,109,10 10310^3 ^
11,1211,12 ^ <220< 2^{20}
1313 2×1052 \times 10^5 1\le 1 B
14,1514,15 ^ 255\le 255 C
1616 <220< 2^{20}
1717 5×1055 \times 10^5 255\le 255 C
182018 \sim 20 ^ <220< 2^{20}
  • 特殊性质 A:所有 ai=1a_i = 1
  • 特殊性质 B:0ai10 \le a_i \le 1
  • 特殊性质 C:0ai2550 \le a_i \le 255