AT_cpsco2019_s1_e Exclusive OR Queries
题目描述
现有一个长度为 $N$ 的整数序列 $A_1, A_2, \ldots, A_N$。你的任务是依次处理 $Q$ 个查询。每个查询步骤如下:
- 选择序列中所有值在 $L_i$ 到 $R_i$ 范围内的元素,计算这些元素的异或值(排他的或),并输出该结果。然后,将满足条件的所有元素更新为 $X_i$。如果在给定范围内没有元素,则输出结果为 $0$。
为了让你更好地理解,异或运算定义如下:
- 给定整数 $c_1, c_2, \ldots, c_n$,它们的异或值 $X$ 在二进制表示下的某个位 $2^k$($k \geq 0$)为 $1$,当且仅当在这些数中,第 $2^k$ 位上值为 $1$ 的个数为奇数,否则该位为 $0$。
例如,数字 $3$ 和 $5$ 的异或值为 $6$(用二进制表示:`011` 和 `101` 的异或是 `110`)。
输入格式
输入以以下格式给出:
第一行是两个整数 $N$ 和 $Q$,表示序列的长度和查询的数量。
第二行包含 $N$ 个整数,代表序列 $A_1, A_2, \ldots, A_N$。
接下来的 $Q$ 行,每行包含三个整数 $L_i, R_i, X_i$,代表一个查询。其中 $L_i$ 和 $R_i$ 是查询范围,$X_i$ 是更新的值。
输出格式
按照查询顺序输出 $Q$ 行,每行是对应查询的结果。
说明/提示
### 约束条件
- 序列长度 $1 \le N \le 300,000$
- 查询次数 $1 \le Q \le 200,000$
- 序列中元素 $0 \le A_i \le 1,000,000,000$
- 查询范围 $0 \le L_i \le R_i \le 1,000,000,000$
- 更新值 $0 \le X_i \le 1,000,000,000$
### 示例说明
- 在第一个查询中,值处于 $7$ 到 $10$ 的整数有 $7$ 和 $9$,它们的异或结果是 $14$,因此输出 $14$。在更新后,序列变为 $\{2, 4, 1, 5, 2\}$。
- 在第二个查询中,值在 $2$ 到 $8$ 范围内的整数有 $2, 4, 5, 2$,它们的异或结果是 $1$,因此输出 $1$。更新后,序列变为 $\{5, 5, 1, 5, 5\}$。
**本翻译由 AI 自动生成**