#P11071. 「QMSOI R1」 Distorted Fate

「QMSOI R1」 Distorted Fate

背景

O Fortuna velut luna statu variabilis……

(图片来自 Phigros 曲绘,侵删。)

加强版 T512613。

题目描述

Geopelia 需要捕捉到一种特殊的,不同于黑洞的引力波。

第 ii 个引力波有着一个频率 AiA_i,而多个引力波会互相影响,叠加,形成一个频率更快的引力波。

具体的,对于一个长度为 nn 的序列 AA,AA 中所有引力波叠加起来的频率 f(A)f(A) 为:⋃i=1nAi\bigcup\limits_{i=1}^n A_i。其中 ⋃\bigcup 表示按位或。

现在,Geopelia 需要知道几段以同一引力波开始的区间的频率之和。

也就是说,Geopelia 要向你询问:

∑i=lrf(A[l,i])\sum_{i=l}^rf(A[l,i])

的值,其中 A[l,r]A[l,r] 为 Al,Al+1,⋯ ,Ar−1,ArA_l,A_{l+1},\cdots,A_{r-1},A_r 组成的序列。

但不幸的是,由于幽蓝边界的引力影响,某一个区间 [l,r][l,r] 中所有引力波的频率可能会异或上一个值 xx。

Geopelia 想实时更新她的数据,你可以帮帮她吗?

她知道引力波的频率可能很高,所以你只需要告诉她答案  mod  230\bmod \ 2^{30} 的值就可以了。

形式化题意

给定一个长度为 nn 的数组 AA,你需要完成以下 qq 次操作。

  1. 1 l r x 将 Ai(l≤i≤r)A_i(l\le i\le r) 异或上 xx。

  2. 2 l r 求:

(∑i=lr⋃j=liAj) mod 230(\sum_{i=l}^r\bigcup_{j=l}^i A_j) \bmod 2^{30}

其中 ⋃\bigcup 表示按位或。

输入格式

第一行输入四个整数 n,m,k,qn,m,k,q。

第二行输入一个字符串 SS。

接下来 kk 行,每行输入一个字符串和一个整数,分别代表 Ti,viT_i,v_i。

接下来 qq 行,每行先输入一个整数 optopt。

若 opt=1opt=1,则再输入一个字符 xx 表示在 SS 末尾添加一个字符 xx。

若 opt=2opt=2,则再输入两个整数 l,rl,r 表示查询有多少个 SS 的子串 S∗S^* 满足 f(S∗)∈[l,r]f(S^*)\in[l,r]。

输出格式

对于每个查询,输出一行一个整数代表所求式子的值  mod  230\bmod \ 2^{30} 的结果。

3 3
1 2 3
2 1 3
1 1 2 2
2 1 3
7
9

提示

样例解释

对于第一组询问:此时 A={1,2,3}A=\{1,2,3\},所以答案为 1+1∪2+1∪2∪3=1+3+3=71+1\cup 2+1\cup 2\cup 3=1+3+3=7。

对于第二组询问:此时 A={3,0,3}A=\{3,0,3\},所以答案为 3+3∪0+3∪0∪3=3+3+3=93+3\cup 0+3\cup 0\cup 3=3+3+3=9。

数据范围

本题使用 subtask 进行捆绑测试,每个 subtask 的具体分值如下:

子任务 nn qq 时间 空间 分值
00 ≤100\le 100 1s1s 512MB512MB 2020
11 ≤2×104\le 2\times 10^4
22 ≤2×105\le 2\times 10^5 3s3s
33 100MB\color{red}100MB 4040

对于所有数据,满足 0≤ai,x<2300\le a_i,x< 2^{30},1≤l≤r≤n1\le l\le r\le n。

INITALIZING……
SCANING……
CONNECTING……__PhigrOS Client Login
TIME_OUT!
CONNECTING……__Unknown
SUCCESS!
————————
……九……鸟……
……鸠……!
……喂?
…听得到吗?
鸠?![SIGNAL LOST]