| 题目名称 | 4291. [CQOI2018] 异或序列 |
|---|---|
| 输入输出 | xorseq.in/out |
| 难度等级 | ★★★ |
| 时间限制 | 1000 ms (1 s) |
| 内存限制 | 512 MiB |
| 测试数据 | 10 |
| 题目来源 |
|
| 开放分组 | 全部用户 |
| 提交状态 | |
| 分类标签 | |
| 查看题解 | 分享题解 |
| 通过:2, 提交:5, 通过率:40% | ||||
|
|
100 | 1.222 s | 5.94 MiB | C++ |
|
|
100 | 1.599 s | 7.16 MiB | C++ |
|
|
0 | 0.030 s | 3.29 MiB | C++ |
|
|
0 | 0.030 s | 3.31 MiB | C++ |
|
|
0 | 1.423 s | 7.08 MiB | C++ |
| 关于 异或序列 的近10条评论(全部评论) |
|---|
在计算机科学中,异或操作是一种常见的位运算,常用于加密、校验和数据压缩等领域。本题源于对序列中子区间异或和的研究,是异或性质与区间查询的经典应用。
已知一个长度为 $n$ 的整数数列 $a_1,a_2,\dots,a_n$,给定查询参数 $l,r$,问在 $a_l,a_{l+1},\dots,a_r$ 区间内,有多少子区间满足异或和等于 $k$。也就是说,对于所有的 $x,y (l \leq x \leq y \leq r)$,能够满足 $a_x \oplus a_{x+1} \oplus \dots \oplus a_y = k$ 的 $x,y$ 有多少组。
输入文件第一行,为 $3$ 个整数 $n,m,k$。
第二行为空格分开的 $n$ 个整数,即 $a_1,a_2,..a_n$。
接下来 $m$ 行,每行两个整数 $l_j,r_j$,表示一次查询。
输出文件共 $m$ 行,对应每个查询的计算结果。
4 5 1 1 2 3 1 1 4 1 3 2 3 2 4 4 4
4 2 1 2 1
样例中,序列为 $[1,2,3,1]$,$k=1$。
- 查询 $[1,4]$:
满足条件的子区间有 $(1,1),(3,3),(4,4),(3,4)$,共 $4$ 组。
- 查询 $[1,3]$:
满足条件的子区间有 $(1,1),(3,3)$,共 $2$ 组。
- 查询 $[2,3]$:
满足条件的子区间有 $(3,3)$,共 $1$ 组。
- 查询 $[2,4]$:
满足条件的子区间有 $(3,3),(4,4)$,共 $2$ 组。
- 查询 $[4,4]$:
满足条件的子区间有 $(4,4)$,共 $1$ 组。
对于 $30\%$ 的数据,$1 \leq n, m \leq 1000$。
对于 $100\%$ 的数据,$1 \leq n, m \leq 10^5$,$0 \leq k, a_i \leq 10^5$,$1 \leq l_j \leq r_j \leq n$。
CQOI 2018