「QMSOI R1」 Distorted Fate
题目背景
![](https://cdn.luogu.com.cn/upload/image_hosting/oeu0ft9d.png)
**O Fortuna velut luna statu variabilis……**
(图片来自 Phigros 曲绘,侵删。)
加强版 [T512613](https://www.luogu.com.cn/problem/T512613)。
题目描述
Geopelia 需要捕捉到一种特殊的,不同于黑洞的引力波。
第 $i$ 个引力波有着一个频率 $A_i$,而多个引力波会互相影响,叠加,形成一个频率更快的引力波。
具体的,对于一个长度为 $n$ 的序列 $A$,$A$ 中所有引力波叠加起来的频率 $f(A)$ 为:$\bigcup\limits_{i=1}^n A_i$。其中 $\bigcup$ 表示按位或。
现在,Geopelia 需要知道几段以同一引力波开始的区间的频率之和。
也就是说,Geopelia 要向你询问:
$$
\sum_{i=l}^rf(A[l,i])
$$
的值,其中 $A[l,r]$ 为 $A_l,A_{l+1},\cdots,A_{r-1},A_r$ 组成的序列。
但不幸的是,由于幽蓝边界的引力影响,某一个区间 $[l,r]$ 中所有引力波的频率可能会异或上一个值 $x$。
Geopelia 想实时更新她的数据,你可以帮帮她吗?
她知道引力波的频率可能很高,所以你只需要告诉她答案 $\bmod \ 2^{30}$ 的值就可以了。
## 形式化题意
给定一个长度为 $n$ 的数组 $A$,你需要完成以下 $q$ 次操作。
1. ```1 l r x``` 将 $A_i(l\le i\le r)$ 异或上 $x$。
2. ```2 l r``` 求:
$$
(\sum_{i=l}^r\bigcup_{j=l}^i A_j) \bmod 2^{30}
$$
其中 $\bigcup$ 表示按位或。
输入输出格式
输入格式
第一行输入两个数 $n$ 和 $q$,代表引力波的数量和操作的次数。
第二行输入 $n$ 个整数,第 $i$ 个数代表引力波 $i$ 初始的频率 $A_i$。
接下来 $q$ 行,每行输入三个整数 $opt,l,r$。
若 $opt=1$,则再输入一个整数 $x$ 表示将区间 $[l,r]$ 中引力波的频率异或上 $x$。
若 $opt=2$,则代表这是一次查询。
输出格式
对于每个查询,输出一行一个整数代表所求式子的值 $\bmod \ 2^{30}$ 的结果。
输入输出样例
输入样例 #1
3 3
1 2 3
2 1 3
1 1 2 2
2 1 3
输出样例 #1
7
9
说明
### 样例解释
对于第一组询问:此时 $A=\{1,2,3\}$,所以答案为 $1+1\cup 2+1\cup 2\cup 3=1+3+3=7$。
对于第二组询问:此时 $A=\{3,0,3\}$,所以答案为 $3+3\cup 0+3\cup 0\cup 3=3+3+3=9$。
### 数据范围
**本题使用 subtask 进行捆绑测试**,每个 subtask 的具体分值如下:
| 子任务 | $n$ | $q$ | 时间 | 空间 | 分值 |
| :----------: | :----------: | :----------: | :----------: | :----------: |:----------:|
| $0$ | $\le 100$ | $\le 100$ | $1s$ | $512MB$ | $20$ |
| $1$ | $\le 2\times 10^4$ | $\le 2\times 10^4$ | $1s$ | $512MB$ |$20$ |
| $2$ | $\le 2\times 10^5$ | $\le 2\times 10^5$ | $3s$ | $512MB$ |$20$ |
| $3$ | $\le 2\times 10^5$ | $\le 2\times 10^5$ | $3s$ | $\color{red}100MB$ |$40$ |
对于所有数据,满足 $0\le a_i,x< 2^{30}$,$1\le l\le r\le n$。
```
INITALIZING……
SCANING……
CONNECTING……__PhigrOS Client Login
TIME_OUT!
CONNECTING……__Unknown
SUCCESS!
————————
……九……鸟……
……鸠……!
……喂?
…听得到吗?
鸠?![SIGNAL LOST]
```