A93504.区间异或查询

普及/提高-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

有一个长度为 NN 的整数数组 数组A数组A(下标从 11 开始)。

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

  • 1 x y1\ x\ y:把 A[x]A[x] 更新成 A[x]yA[x]\oplus y
  • 2 l r2\ l\ r:输出 A[l]A[l+1]A[r]A[l]\oplus A[l+1]\oplus \dots \oplus A[r]

其中 \oplus 表示按位异或(bitwise XOR)。可以理解为:二进制每一位“相同为 00,不同为 11

输入格式

第一行输入 N QN\ Q
第二行输入 A1 A2  ANA_1\ A_2\ \dots\ A_N
接下来 QQ 行,每行一个查询:

  • 如果 Ti=1T_i=1:输入 1 Xi Yi1\ X_i\ Y_i
  • 如果 Ti=2T_i=2:输入 2 Xi Yi2\ X_i\ Y_i(表示 l=Xi, r=Yil=X_i,\ r=Y_i

输出格式

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

输入输出样例

  • 输入#1

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

    输出#1

    0
    1
    2

说明/提示

数据范围

  • 1N3000001\le N\le 300000
  • 1Q3000001\le Q\le 300000
  • 0Ai<2300\le A_i < 2^{30}
  • Ti{1,2}T_i\in\{1,2\}
  • Ti=1T_i=11XiN1\le X_i\le N0Yi<2300\le Y_i<2^{30}
  • Ti=2T_i=21XiYiN1\le X_i\le Y_i\le N

样例解释

开始时 数组A=[1,2,3]数组A=[1,2,3](下标从 11 开始)。

  1. 查询 2 1 32\ 1\ 3:计算
    A[1]A[2]A[3]=123=0A[1]\oplus A[2]\oplus A[3]=1\oplus 2\oplus 3=0,所以输出 00

  2. 查询 2 2 32\ 2\ 3:计算
    A[2]A[3]=23=1A[2]\oplus A[3]=2\oplus 3=1,所以输出 11

  3. 操作 1 2 31\ 2\ 3:更新
    A[2]A[2]3=23=1A[2]\leftarrow A[2]\oplus 3=2\oplus 3=1,此时 数组A=[1,1,3]数组A=[1,1,3]

  4. 查询 2 2 32\ 2\ 3:计算
    A[2]A[3]=13=2A[2]\oplus A[3]=1\oplus 3=2,所以输出 22

首页