题库练习 异或和(xor)

A71945 | 异或和(xor)

来源编程题
时间限制1s
内存限制512MB
通过 / 提交0/0

题目描述

小 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。两个区间 [l_1, r_1], [l_2, r_2] 相交当且仅当两个区间同时包含至少一个相同的下标,即存在 1 \le i \le n 使得 l_1 \le i \le r_1l_2 \le i \le r_2

例如,对于序列 [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 , a_n,表示小 R 的序列。

输出格式

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

输入输出样例

输入 #1
4 2
2 1 0 3
输出 #1
2
输入 #2
4 3
2 1 0 3
输出 #2
2
输入 #3
4 0
2 1 0 3
输出 #3
1
C++ 编辑器
输入
输出