题目描述
给定一个长为 n 的括号序列,每个位置有一个括号 ai,其中 ai=1 代表是左括号 ′(′,ai=0 代表是右括号 ′)′。 ai 位置的括号有一个权值 bi。
对任意括号序列,通过不断删除形如 ′()′ 的子段直到无法操作,最终可以得到一个唯一的序列,这个序列称为不匹配括号,如 a1=′)′,a2=′(′,a3=′(′,a4=′)′,a5=′(′,这个括号序列的不匹配括号序列为 ′)((′,其不匹配括号对应位置为 1,2,5,其不匹配括号对应位置的 b 为 b1,b2,b5。
有 m 次操作,操作有以下三类:
1 x y
:进行单点修改,即 ax:=1−ax;bx:=y。
2 l r
:求 a[l..r] 中不匹配括号对应位置的 b 从左到右的 NAND (32 位的按位与非,可以见 https://en.wikipedia.org/wiki/NAND_logic ), max(最大值) ,将二者 xor 后输出。如果不匹配括号为空序列,则 NAND 的答案为 232−1, max 的答案为 0。
NAND 即以 c0=232−1 为初值,然后依次 ci=NAND(ci−1,bi),对于一个 n 个值的序列 b,最后答案为 cn。
3 l r
:将 a[l..r] 和 a[r+1..n] 交换位置,b 也做同样的操作。
输入格式
第一行用空格隔开的两个数 n,m。
之后 n 行每行用空格隔开的两个数,第 i 行为 ai,bi。
之后 m 行,每行表示一个操作。
输出格式
对每个操作 2 输出一行表示答案。
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% 的数据,
0≤a[i]≤1。
0≤b[i]≤109。
1≤n≤2×106,1≤m≤2×105。