跳转至

纳米电脑主机

  • 参考时间限制:0.5 秒(参考环境:评测环境与性能;仅供预估)
  • 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间的 2 倍,按 0.5 秒的倍数向上取整;若平台仅支持更粗的粒度,再向上取整到平台可设置值。
  • 内存限制:64 MB

背景故事

帝国研究员用纳米电脑主机分析无人机的升级方案。研究记录是一列非负整数,每种连续的研究组合都有一个异或值。研究员会修改单条记录,也会查询一段记录内所有连续组合的异或值之和。请帮助主机及时回答。

形式化问题描述

维护长度为 \(n\) 的非负整数数组 \(a_1,\ldots,a_n\) ,依次处理 \(q\) 个操作:

  • 1 l r :查询所有满足 \(l\le i\le j\le r\) 的非空子区间 \([i,j]\) 的异或值之和,即
\[ \sum_{i=l}^{r}\sum_{j=i}^{r}(a_i\oplus a_{i+1}\oplus\cdots\oplus a_j) \]
  • 2 p v :把 \(a_p\) 赋值为 \(v\) ,不是加上 \(v\) .

其中 \(\oplus\) 表示按位异或。外层求和使用普通整数加法,不再异或,也不取模。每次查询使用当时的数组。

输入格式

第一行 \(n,q\) .第二行 \(n\) 个整数表示初始数组。之后 \(q\) 行按上述格式给出操作。

输出格式

每次操作 1 输出一行一个整数。若没有查询,则不输出任何内容。

样例 1

输入

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

输出

43
42
1
8
4

解释

第一次查询的数组为 \([3,8,2]\) ,六个子区间的异或值为 \(3,8,2,11,10,9\) ,总和为 \(43\) .

样例 2

输入

2 4
65536 65536
1 1 2
2 1 0
1 1 2
1 1 1

输出

131072
131072
0

解释

数值 \(65536\) 的第 \(16\) 位为 \(1\) ,必须计入。长度为二的子区间在修改前异或值为 \(0\) ,修改后为 \(65536\) .

数据范围与保证

  • \(1\le n,q\le100000\) .
  • 初始值和赋值参数均满足 \(0\le a_i,v\le65536\) .
  • \(1\le l\le r\le n\) ,\(1\le p\le n\) .

数据分组

分值比例 额外条件
100% 无额外条件