#P6781. [Ynoi2008] rupq

[Ynoi2008] rupq

题目描述

给定一个长为 nn 的括号序列,每个位置有一个括号 aia_i,其中 ai=1a_i=1 代表是左括号 ('('ai=0a_i=0 代表是右括号 )')'aia_i 位置的括号有一个权值 bib_i

对任意括号序列,通过不断删除形如 ()'()' 的子段直到无法操作,最终可以得到一个唯一的序列,这个序列称为不匹配括号,如 a1=),a2=(,a3=(,a4=),a5=(a_1=')',a_2='(',a_3='(',a_4=')',a_5='(',这个括号序列的不匹配括号序列为 )((')((',其不匹配括号对应位置为 1,2,51,2,5,其不匹配括号对应位置的 bbb1,b2,b5b_1,b_2,b_5

mm 次操作,操作有以下三类:

1 x y:进行单点修改,即 ax:=1ax;bx:=ya_x:=1-a_x; b_x:=y

2 l r:求 a[l..r]a[l..r] 中不匹配括号对应位置的 bb 从左到右的 NAND\texttt {NAND}3232 位的按位与非,可以见 https://en.wikipedia.org/wiki/NAND_logic ), max\texttt {max}(最大值) ,将二者 xor\texttt {xor} 后输出。如果不匹配括号为空序列,则 NAND\texttt {NAND} 的答案为 23212^{32}-1max\texttt {max} 的答案为 00

NAND\texttt {NAND} 即以 c0=2321c_0=2^{32}-1 为初值,然后依次 ci=NAND(ci1,bi)c_i=\texttt {NAND}(c_{i-1},b_i),对于一个 nn 个值的序列 bb,最后答案为 cnc_n

3 l r:将 a[l..r]a[l..r]a[r+1..n]a[r+1..n] 交换位置,bb 也做同样的操作。

输入格式

第一行用空格隔开的两个数 n,mn,m

之后 nn 行每行用空格隔开的两个数,第 ii 行为 ai,bia_i,b_i

之后 mm 行,每行表示一个操作。

输出格式

对每个操作 22 输出一行表示答案。

10 10
0 1
1 9
1 2
0 5
1 1
0 6
1 1
0 4
0 8
1 7
2 5 7
3 1 10
1 1 3
2 1 3
3 2 9
3 4 10
3 7 8
1 10 2
3 3 4
2 5 7
4294967295
4294967284
4294967281

提示

Idea:ccz181078,Solution:ccz181078,Code:ccz181078,Data:nzhtl1477

对于 100%100\% 的数据,

0a[i]10 \le a[i] \le 1

0b[i]1090 \le b[i] \le 10^9

1n2×106,1m2×1051 \le n \le 2\times10^6,1 \le m \le 2\times10^5