A93504.区间异或查询
普及/提高-
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
有一个长度为 N 的整数数组 数组A(下标从 1 开始)。
你需要处理 Q 次操作,每次操作是下面两种之一:
- 1 x y:把 A[x] 更新成 A[x]⊕y。
- 2 l r:输出 A[l]⊕A[l+1]⊕⋯⊕A[r]。
其中 ⊕ 表示按位异或(bitwise XOR)。可以理解为:二进制每一位“相同为 0,不同为 1。
输入格式
第一行输入 N Q。
第二行输入 A1 A2 … AN。
接下来 Q 行,每行一个查询:
- 如果 Ti=1:输入 1 Xi Yi
- 如果 Ti=2:输入 2 Xi Yi(表示 l=Xi, r=Yi)
输出格式
每当遇到 Ti=2 的查询,输出一行答案。
输入输出样例
输入#1
3 4 1 2 3 2 1 3 2 2 3 1 2 3 2 2 3
输出#1
0 1 2
说明/提示
数据范围
- 1≤N≤300000
- 1≤Q≤300000
- 0≤Ai<230
- Ti∈{1,2}
- 若 Ti=1:1≤Xi≤N 且 0≤Yi<230
- 若 Ti=2:1≤Xi≤Yi≤N
样例解释
开始时 数组A=[1,2,3](下标从 1 开始)。
-
查询 2 1 3:计算
A[1]⊕A[2]⊕A[3]=1⊕2⊕3=0,所以输出 0。 -
查询 2 2 3:计算
A[2]⊕A[3]=2⊕3=1,所以输出 1。 -
操作 1 2 3:更新
A[2]←A[2]⊕3=2⊕3=1,此时 数组A=[1,1,3]。 -
查询 2 2 3:计算
A[2]⊕A[3]=1⊕3=2,所以输出 2。