AT_abc185_f [ABC185F] Range Xor Query
题目描述
有一个长度为 $N$ 的整数序列 $A$。
你需要对该序列处理 $Q$ 个查询。对于第 $i$ 个查询,给定 $T_i,\ X_i,\ Y_i$,请按如下方式进行操作:
- 当 $T_i = 1$ 时
用 $A_{X_i} \oplus Y_i$ 替换 $A_{X_i}$。
- 当 $T_i = 2$ 时
输出 $A_{X_i} \oplus A_{X_i+1} \oplus A_{X_i+2} \oplus \dots \oplus A_{Y_i}$ 的结果。
其中 $a \oplus b$ 表示 $a$ 和 $b$ 的按位异或。
按位异或的定义如下:对于整数 $A, B$,它们的按位异或 $A \oplus B$,在二进制表示下,对于每一位 $2^k$($k \geq 0$),如果 $A$ 和 $B$ 的该位中只有一个是 $1$,则结果的该位为 $1$,否则为 $0$。
例如,$3 \oplus 5 = 6$(二进制表示为:$011 \oplus 101 = 110$)。
输入格式
输入以如下格式从标准输入给出。
> $N$ $Q$
> $A_1\ \ A_2\ \ A_3\ \ \dots\ \ A_N$
> $T_1$ $X_1$ $Y_1$
> $T_2$ $X_2$ $Y_2$
> $T_3$ $X_3$ $Y_3$
> $\vdots$
> $T_Q$ $X_Q$ $Y_Q$
输出格式
对于每个 $T_i = 2$ 的查询,按顺序每行输出一个答案。
说明/提示
### 数据范围
- $1 \leq N \leq 300000$
- $1 \leq Q \leq 300000$
- $0 \leq A_i < 2^{30}$
- $T_i$ 取 $1$ 或 $2$
- 若 $T_i = 1$,则 $1 \leq X_i \leq N$ 且 $0 \leq Y_i < 2^{30}$
- 若 $T_i = 2$,则 $1 \leq X_i \leq Y_i \leq N$
- 所有输入均为整数
### 样例解释 1
第 $1$ 个查询输出 $1 \oplus 2 \oplus 3 = 0$。
第 $2$ 个查询输出 $2 \oplus 3 = 1$。
第 $3$ 个查询将 $A_2$ 替换为 $2 \oplus 3 = 1$。
第 $4$ 个查询输出 $1 \oplus 3 = 2$。
由 ChatGPT 4.1 翻译