5868 - 异或和(xor)

题目描述

小 R 有一个长度为 n 的非负整数序列 a_1, a_2, \dots , a_n。定义一个区间 [l, r] (1 \le l \le r \le n) 的权值为 a_l, a_{l+1}, \dots , a_r 的二进制按位异或和,即 a_l ⊕ a_{l+1} ⊕ \dots ⊕ a_r,其中 ⊕ 表示二进制按位异或。

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

例如,对于序列 [2, 1, 0, 3],若 k = 2,则小 R 可以选择区间 [1, 1] 和区间 [2, 4],权值分别为 21 ⊕ 0 ⊕ 3 = 2;若 k = 3,则小 R 可以选择区间 [1, 2] 和区间 [4, 4],权值分别为 1 ⊕ 2 = 33

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

输入

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

输入的第二行包含 n 个非负整数 a_1, a_2, \dots , an,表示小 R 的序列。

输出

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

样例

输入

4 2
2 1 0 3

输出

2

输入

4 3
2 1 0 3

输出

2

输入

4 0
2 1 0 3

输出

1
说明

【样例 1 解释】

小 R 可以选择区间 [1, 1] 和区间 [2, 4],异或和分别为 21 ⊕ 0 ⊕ 3 = 2。可以证明,小 R 能选出的区间数量的最大值为 2

【样例 2 解释】

小 R 可以选择区间 [1, 2] 和区间 [4, 4],异或和分别为 1 ⊕ 2 = 33。可以证明,小R 能选出的区间数量的最大值为 2

【样例 3 解释】

小 R 可以选择区间 [3, 3],异或和为 0。可以证明,小 R 能选出的区间数量的最大值为 1。注意:小 R 不能同时选择区间 [3, 3] 和区间 [1, 4],因为这两个区间同时包含下标 3

【样例 4】

见选手目录下的 xor/xor4.in 与 xor/xor4.ans。

该样例满足测试点 4,5 的约束条件。

【样例 5】

见选手目录下的 xor/xor5.in 与 xor/xor5.ans。

该样例满足测试点 9,10 的约束条件。

【样例 6】

见选手目录下的 xor/xor6.in 与 xor/xor6.ans。

该样例满足测试点 14,15 的约束条件。

【数据范围】

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

  • 1 \le n \le 5 \times 10^50 \le k \lt 2^{20}
  • 对于所有 1 \le i \le n,均有 0 \le ai \lt 2^{20}
测试点编号 n \le k 特殊性质
1 2 =0 A
2 10 \le 1 B
3 10^2 =0 A
4,5 \le 1 B
6 \sim 8 \le 255 C
9,10 10^3
11,12 \lt2^{20}
13 2 \times 10^5 \le 1 B
14,15 \le 255 C
16 \lt2^{20}
17 5 \times 10^5 \le 255 C
18 \sim 20 \lt 2^{20}

特殊性质 A:对于所有 1 \le i \le n,均有 a_i = 1

特殊性质 B:对于所有 1 \le i \le n,均有 0 \le a_i \le 1

特殊性质 C:对于所有 1 \le i \le n,均有 0 \le a_i \le 255

附件下载

xor.zip (240.24 KB)

来源

CSP-J/S 2025 第二轮认证

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 80
通过人数 31
金币数量 0 枚
难度 入门


上一题 下一题