#aBC185F. [ABC185F] Range Xor Query

[ABC185F] Range Xor Query

AT_abc185_f [ABC185F] Range Xor Query

题目描述

有一个长度为 NN 的整数序列 AA
你需要对该序列处理 QQ 个查询。对于第 ii 个查询,给定 Ti, Xi, YiT_i,\ X_i,\ Y_i,请按如下方式进行操作:

  • Ti=1T_i = 1
    AXiYiA_{X_i} \oplus Y_i 替换 AXiA_{X_i}
  • Ti=2T_i = 2
    输出 $A_{X_i} \oplus A_{X_i+1} \oplus A_{X_i+2} \oplus \dots \oplus A_{Y_i}$ 的结果。

其中 aba \oplus b 表示 aabb 的按位异或。
按位异或的定义如下:对于整数 A,BA, B,它们的按位异或 ABA \oplus B,在二进制表示下,对于每一位 2k2^kk0k \geq 0),如果 AABB 的该位中只有一个是 11,则结果的该位为 11,否则为 00

例如,35=63 \oplus 5 = 6(二进制表示为:011101=110011 \oplus 101 = 110)。

输入格式

输入以如下格式从标准输入给出。

NN QQ
A1  A2  A3    ANA_1\ \ A_2\ \ A_3\ \ \dots\ \ A_N
T1T_1 X1X_1 Y1Y_1
T2T_2 X2X_2 Y2Y_2
T3T_3 X3X_3 Y3Y_3
\vdots
TQT_Q XQX_Q YQY_Q

输出格式

对于每个 Ti=2T_i = 2 的查询,按顺序每行输出一个答案。

输入输出样例 #1

输入 #1

3 4
1 2 3
2 1 3
2 2 3
1 2 3
2 2 3

输出 #1

0
1
2

输入输出样例 #2

输入 #2

10 10
0 5 3 4 7 0 0 0 1 0
1 10 7
2 8 9
2 3 6
2 1 6
2 1 10
1 9 4
1 6 1
1 6 3
1 1 7
2 3 5

输出 #2

1
0
5
3
0

说明/提示

数据范围

  • 1N3000001 \leq N \leq 300000
  • 1Q3000001 \leq Q \leq 300000
  • 0Ai<2300 \leq A_i < 2^{30}
  • TiT_i1122
  • Ti=1T_i = 1,则 1XiN1 \leq X_i \leq N0Yi<2300 \leq Y_i < 2^{30}
  • Ti=2T_i = 2,则 1XiYiN1 \leq X_i \leq Y_i \leq N
  • 所有输入均为整数

样例解释 1

11 个查询输出 123=01 \oplus 2 \oplus 3 = 0
22 个查询输出 23=12 \oplus 3 = 1
33 个查询将 A2A_2 替换为 23=12 \oplus 3 = 1
44 个查询输出 13=21 \oplus 3 = 2

由 ChatGPT 4.1 翻译