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 自动生成**