题单练习 树状数组

A6905 | 区间异或查询

时间限制1s
内存限制128MB
通过 / 提交0/0

题目描述

有一个长度为 $N$ 的整数数组 $数组A$(下标从 $1$ 开始)。

你需要处理 $Q$ 次操作,每次操作是下面两种之一:

  • $1\ x\ y$:把 $A[x]$ 更新成 $A[x]\oplus y$。
  • $2\ l\ r$:输出 $A[l]\oplus A[l+1]\oplus \dots \oplus A[r]$。
其中 $\oplus$ 表示按位异或(bitwise XOR)。可以理解为:二进制每一位“相同为 $0$,不同为 $1$。

输入格式

第一行输入 $N\ Q$。
第二行输入 $A_1\ A_2\ \dots\ A_N$。
接下来 $Q$ 行,每行一个查询:

  • 如果 $T_i=1$:输入 $1\ X_i\ Y_i$
  • 如果 $T_i=2$:输入 $2\ X_i\ Y_i$(表示 $l=X_i,\ r=Y_i$)

输出格式

每当遇到 $T_i=2$ 的查询,输出一行答案。

输入输出样例

输入 #1
3 4
1 2 3
2 1 3
2 2 3
1 2 3
2 2 3
输出 #1
0
1
2
C++ 编辑器
输入
输出