时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
在一个风和日丽的下午,集训队蒟蒻
cbyyx学了莫队,突发奇想的他想到了一个全新
idea,给定一个正整数
n和一个由
’^’,’|’,’&’组成的长度为
n的字符串
op,再给
n个非负整数表示

~

,接下来给定一个正整数
m,表示
m次询问,每次询问有两种形式:
1、给定一个正整数
pos和一个非负整数
val,把
修改为val
输入描述:
第一行给定一个正整数n
第二行给定一个长度为n的字符串op,字符串下标从1开始
第三行给定
n个非负整数表示
~
第四行给定一个正整数m
接下来m行每行给定一个正整数k
如果k=1则再输入正整数pos和非负整数val
如果k=2则再输入非负整数x和一个正整数l和正整数r
1<=n<=1e5,op中只包含’^’或‘|’或’&’
1<=m<=1e5,1<=k<=2
1<=pos<=n,0<=val<=1e6,0<=x<=1e6,1<=l<=r<=n
输出描述:
对于每个k=2的询问,输出一个整数ans表示答案。
示例1
输入
复制
6
|^^|&|
2 9 10 2 0 4
6
2 1 1 6
1 1 10
2 3 1 1
1 3 8
2 9 1 5
2 1 1 6
说明
对于第一个询问,答案为1|2^9^10|2&0|4=4
第二次操作后,数组变为10 9 102 0 4
对于第三个询问,答案为3|10=11
第四次操作后,数组变为10 9 8 20 4
对于第五个询问,答案为9|10^9^8|2&0=0
备注:
运算时三个字符’^’和‘|’和’&’的运算优先级一样