【25CSPJ普及组】异或和
【题目描述】
小 R 有一个长度为 n 的非负整数序列 a1, a2, ..., an。定义一个区间 l,r 的权值为 al, al+1, ..., ar 的二进制按位异或和,即 al⊕al+1⊕⋅⋅⋅⊕ar,其中 ⊕ 表示二进制按位异或。
小 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 求出他能选出的区间数量的最大值。
【输入】
输入的第一行包含两个非负整数 n,k,分别表示小 R 的序列长度和小 X 给小 R 的非负整数。
输入的第二行包含 n 个非负整数 a1,a2,...,an,表示小 R 的序列。
【输出】
输出一行一个非负整数,表示小 R 能选出的区间数量的最大值。
【输入样例】
4 2
2 1 0 3
【输出样例】
2
【提示】
【样例 1 解释】
小 R 可以选择区间 [1,1] 和区间 [2,4],异或和分别为 2 和 1⊕0⊕
订阅专栏 解锁全文
3072

被折叠的 条评论
为什么被折叠?



