#CSPJ2025C. 异或和(xor)
异或和(xor)
题目描述
小R有一个长度为 n 的非负整数序列 a1, a2, …, an。定义一个区间 [l, r] (1 ≤ l ≤ r ≤ n) 的权值为 a_l, a_{l+1}, …, a_r 的二进制按位异或和,即 a_l ⊕ a_{l+1} ⊕ ⋯ ⊕ a_r,其中 ⊕ 表示二进制按位异或。 小X给了小R一个非负整数 k。小X希望小R选择序列中尽可能多的不相交的区间,使得每个区间的权值均为 k。两个区间 [l1, r1], [l2, r2] 相交当且仅当两个区间同时包含至少一个相同的下标,即存在 1 ≤ i ≤ n 使得 l1 ≤ i ≤ r1 且 l2 ≤ i ≤ r2。 例如,对于序列 [2,1,0,3],若 k=2,则小R可以选择区间 [1,1] 和区间 [2,4],权值分别为 2 和 1⊕0⊕3=2;若 k=3,则小R可以选择区间 [1,2] 和区间 [4,4],权值分别为 1⊕2=3 和 3。 你需要帮助小R求出他能选出的区间数量的最大值。
输入格式
从文件 xor.in 中读入数据。 输入的第一行包含两个非负整数 n, k,分别表示小R的序列长度和小X给小R的非负整数。 输入的第二行包含 n 个非负整数 a1, a2, ..., an,表示小R的序列。
输出格式
输出到文件 xor.out 中。 输出一行一个非负整数,表示小R能选出的区间数量的最大值。
4 2
2 1 0 3
2
4 3
2 1 0 3
2
4 0
2 1 0 3
1
数据规模与约定
