A5448 | [CSP-J 2025] 异或和 / xor
来源CSP-S
时间限制1s
内存限制512MB
通过 / 提交0/0
题目描述
小 R 有一个长度为 $n$ 的非负整数序列 $a_1, a_2, \dots, a_n$。定义一个区间 $[l, r]$ ($1 \leq l \leq r \leq n$) 的权值为 $a_l, a_{l+1}, \dots, a_r$ 的二进制按位异或和,即 $a_l \oplus a_{l+1} \oplus \dots \oplus a_r$,其中 $\oplus$ 表示二进制按位异或。
小 X 给了小 R 一个非负整数 $k$。小 X 希望小 R 选择序列中尽可能多的不相交的区间,使得每个区间的权值均为 $k$。两个区间 $[l_1, r_1], [l_2, r_2]$ 相交当且仅当两个区间同时包含至少一个相同的下标,即存在 $1 \leq i \leq n$ 使得 $l_1 \leq i \leq r_1$ 且 $l_2 \leq i \leq r_2$。
例如,对于序列 $[2, 1, 0, 3]$,若 $k = 2$,则小 R 可以选择区间 $[1, 1]$ 和区间 $[2, 4]$,权值分别为 $2$ 和 $1 \oplus 0 \oplus 3 = 2$;若 $k = 3$,则小 R 可以选择区间 $[1, 2]$ 和区间 $[4, 4]$,权值分别为 $1 \oplus 2 = 3$ 和 $3$。
你需要帮助小 R 求出他能选出的区间数量的最大值。
小 X 给了小 R 一个非负整数 $k$。小 X 希望小 R 选择序列中尽可能多的不相交的区间,使得每个区间的权值均为 $k$。两个区间 $[l_1, r_1], [l_2, r_2]$ 相交当且仅当两个区间同时包含至少一个相同的下标,即存在 $1 \leq i \leq n$ 使得 $l_1 \leq i \leq r_1$ 且 $l_2 \leq i \leq r_2$。
例如,对于序列 $[2, 1, 0, 3]$,若 $k = 2$,则小 R 可以选择区间 $[1, 1]$ 和区间 $[2, 4]$,权值分别为 $2$ 和 $1 \oplus 0 \oplus 3 = 2$;若 $k = 3$,则小 R 可以选择区间 $[1, 2]$ 和区间 $[4, 4]$,权值分别为 $1 \oplus 2 = 3$ 和 $3$。
你需要帮助小 R 求出他能选出的区间数量的最大值。
输入格式
输入的第一行包含两个非负整数 $n, k$,分别表示小 R 的序列长度和小 X 给小 R 的非负整数。
输入的第二行包含 $n$ 个非负整数 $a_1, a_2, \dots, a_n$,表示小 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
大数据下载链接
xor.zip
说明/提示
【样例 1 解释】
小 R 可以选择区间 $[1, 1]$ 和区间 $[2, 4]$,异或和分别为 $2$ 和 $1 \oplus 0 \oplus 3 = 2$。可以证明,小 R 能选出的区间数量的最大值为 $2$。
【样例 2 解释】
小 R 可以选择区间 $[1, 2]$ 和区间 $[4, 4]$,异或和分别为 $1 \oplus 2 = 3$ 和 $3$。可以证明,小 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 \leq n \leq 5 \times 10^5$, $0 \leq k < 2^{20}$;
- 对于所有 $1 \leq i \leq n$,均有 $0 \leq a_i < 2^{20}$。
| 测试点编号 | $n \leq$ | $k$ | 特殊性质 |
|---|---|---|---|
| 1 | 2 | $=0$ | A |
| 2 | 10 | $\leq 1$ | B |
| 3 | $10^2$ | $=0$ | A |
| 4, 5 | ^ | $\leq 1$ | B |
| 6 ~ 8 | ^ | $\leq 255$ | C |
| 9, 10 | $10^3$ | ^ | ^ |
| 11, 12 | ^ | $< 2^{20}$ | 无 |
| 13 | $2 \times 10^5$ | $\leq 1$ | B |
| 14, 15 | ^ | $\leq 255$ | C |
| 16 | ^ | $< 2^{20}$ | 无 |
| 17 | $5 \times 10^5$ | $\leq 255$ | C |
| 18 ~ 20 | ^ | $< 2^{20}$ | 无 |
特殊性质 A: 对于所有 $1 \leq i \leq n$,均有 $a_i = 1$。
特殊性质 B: 对于所有 $1 \leq i \leq n$,均有 $0 \leq a_i \leq 1$。
特殊性质 C: 对于所有 $1 \leq i \leq n$,均有 $0 \leq a_i \leq 255$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?