loj#P3195. 「eJOI2019」异或橙子

「eJOI2019」异或橙子

题目描述

本题译自 eJOI2019 Problem A. XORanges

Janez 喜欢橙子!他制造了一个橙子扫描仪,但是这个扫描仪对于扫描的每个橙子的图像只能输出一个 3232 位整数。

他一共扫描了 nn 个橙子,但有时他也会重新扫描一个橙子,导致这个橙子的 3232 位整数发生更新。

Janez 想要分析这些橙子,他觉得异或操作非常有趣,他每次选取一个区间从 llu(lu)u(l\le u),他想要得到这个区间内所有子区间的异或和的异或和。

例如 l=2,u=4l = 2, u = 4 的情况,记橙子序列 AA 中第 ii 个橙子的整数是 aia_i,那么他要求的就是

$$a_2 \oplus a_3 \oplus a_4 \oplus (a_2 \oplus a_3) \oplus (a_3 \oplus a_4) \oplus (a_2 \oplus a_3 \oplus a_4) $$

输入格式

第一行输入两个正整数 n,qn, q,表示橙子数量和操作次数。

接下来一行 nn 个非负整数,表示每个橙子扫描得到的数值 aia_i,从 11 开始编号。

接下来 qq 行,每行三个数:

  • 如果第一个数是 11,接下来输入一个正整数 ii 与非负整数 jj,表示将第 ii 个橙子的扫描值 aia_i 修改为 jj
  • 如果第一个数是 22,接下来输入两个正整数 l,ul, u 表示询问这个区间的答案。

输出格式

对于每组询问,输出一行一个非负整数,表示所求的总异或和。

3 3
1 2 3
2 1 3
1 1 3
2 1 3
2
0
5 6
1 2 3 4 5
2 1 3
1 1 3
2 1 5
2 4 4
1 1 1
2 4 4
2
5
4
4

数据范围与提示

对于 100%100\% 的数据,保证 0ai109,1n,q2×1050\le a_i \le 10^9, 1\le n, q\le 2\times 10^5

子任务编号 n,qn, q 特殊限制 分值
11 100\le 100 1212
22 500\le 500 不存在修改操作 1818
33 5000\le 5000 2525
44 2×105\le 2\times 10^5 不存在修改操作 2020
55 2525