Problem B: 防止打扰
Memory Limit:512 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:24
Solved:1
Description
“Oh, move over”
Hermione snarled. She grabbed Harry’s wand, tapped the lock and whispered:
“Alohomora!”
【题目描述】
David
Tao 的学校很重视 OIer 的培养,为了让他们有个安静不受打扰的环境,校长
在通往训练机房的路上安装了 n 道密码门。每道密码门可以对输入的数做一定计算,并
将结果输出给下一道密码门作为输入。只要根据入口处输入的数经过所有密码门后的最
终计算结果,就可以判断出来者是否掌握真正的密码。
具体而言,第 i 道密码门有一个操作符 OPi 和一个参数 Bi,其中操作符分为三种:
‘AND‘、‘OR‘ 和 ‘XOR‘,分别表示该密码门会将输入的数与 Bi 进行按位与、按位或、按
位异或后进行输出。按位与对应 C++ 中的 & 运算符,按位或对应 C++ 中的 | 运算符,
按位异或对应 C++ 中的 ^ 运算符。可以分别用表达式 a&b、a|b 和 a^b 计算两个数 a 和
b 进行按位与、按位或、按位异或运算的结果。为进一步保证安全,校长可以随时修改密
码门的操作符和参数。
David 获得了一个事件日志,日志中记录着按时间的先后顺序共发生的 m 个事件,
每个事件可能是有人在入口输入了一个数,或者校长修改了某一道密码门的操作符和参
数。
David 希望知道对于每个输入事件,该数依次经过所有密码门后的最终计算结果是
什么?
Hermione snarled. She grabbed Harry’s wand, tapped the lock and whispered:
“Alohomora!”
【题目描述】
David
Tao 的学校很重视 OIer 的培养,为了让他们有个安静不受打扰的环境,校长
在通往训练机房的路上安装了 n 道密码门。每道密码门可以对输入的数做一定计算,并
将结果输出给下一道密码门作为输入。只要根据入口处输入的数经过所有密码门后的最
终计算结果,就可以判断出来者是否掌握真正的密码。
具体而言,第 i 道密码门有一个操作符 OPi 和一个参数 Bi,其中操作符分为三种:
‘AND‘、‘OR‘ 和 ‘XOR‘,分别表示该密码门会将输入的数与 Bi 进行按位与、按位或、按
位异或后进行输出。按位与对应 C++ 中的 & 运算符,按位或对应 C++ 中的 | 运算符,
按位异或对应 C++ 中的 ^ 运算符。可以分别用表达式 a&b、a|b 和 a^b 计算两个数 a 和
b 进行按位与、按位或、按位异或运算的结果。为进一步保证安全,校长可以随时修改密
码门的操作符和参数。
David 获得了一个事件日志,日志中记录着按时间的先后顺序共发生的 m 个事件,
每个事件可能是有人在入口输入了一个数,或者校长修改了某一道密码门的操作符和参
数。
David 希望知道对于每个输入事件,该数依次经过所有密码门后的最终计算结果是
什么?
Input
第一行包含两个正整数 n 和 m,分别表示密码门的数量与发生的事件数。
接下来 n 行,第 i 行包含一个字符串 OPi 和一个正整数 Bi,分别表示初始时第 i 道
密码门的操作符和参数。
接下来 m 行,每行首先包含一个正整数 type,若 type = 1,则后面跟一个正整数 X,
表示有人在门口输入了 X,你需要计算 X 依次通过所有密码门后的结果;若 type = 2,
则后面跟一个正整数 id、一个字符串 OP′ 和一个正整数 B′,表示第 id 道密码门的操作
接下来 n 行,第 i 行包含一个字符串 OPi 和一个正整数 Bi,分别表示初始时第 i 道
密码门的操作符和参数。
接下来 m 行,每行首先包含一个正整数 type,若 type = 1,则后面跟一个正整数 X,
表示有人在门口输入了 X,你需要计算 X 依次通过所有密码门后的结果;若 type = 2,
则后面跟一个正整数 id、一个字符串 OP′ 和一个正整数 B′,表示第 id 道密码门的操作
符被修改为了 OP′,参数改为了 B′。
数据保证输入中的字符串均为’AND’、’OR’ 或’XOR’ 中的一种,其分别对应这道密
码门进行按位与、按位或、按位异或运算。
Output
对于每个输入事件,输出一行一个正整数,表示入口输入的数依次通过所有密码门
后输出的结果。
后输出的结果。
Sample Input Copy
3 3
XOR 11
AND 7
OR 17
1 13
2 2 AND 15
1 5
Sample Output Copy
23
31
HINT
一共有 3 道密码门,初始时密码门的操作符和参数依次为 XOR 11、AND 7 和 OR 17,
按时间顺序发生的 3 个事件如下:
- 在门口输入了 13,而 13 XOR 11 = 15、15 AND 7 = 7、7 OR 17 = 23,故最终密
码门输出的结果为 23。
- 第 2 道密码门的参数被改为 AND 15
- 在门口输入了 5,而 5 XOR 11 = 14、14 AND 15 = 14、14 OR 17 = 31,故最终密
码门输出的结果为 31。
按时间顺序发生的 3 个事件如下:
- 在门口输入了 13,而 13 XOR 11 = 15、15 AND 7 = 7、7 OR 17 = 23,故最终密
码门输出的结果为 23。
- 第 2 道密码门的参数被改为 AND 15
- 在门口输入了 5,而 5 XOR 11 = 14、14 AND 15 = 14、14 OR 17 = 31,故最终密
码门输出的结果为 31。
于 100% 的数据,保证 1 ≤ n, m ≤ 2 × 105, 1 ≤ type ≤ 2, 1 ≤ Bi, B′, X ≤ 1000, 1 ≤ id ≤ n。
测试点数量 n ⩽ m ⩽
20% 2000 2000
60% 20000 20000
在后两档数据中,各有三组数据没有发生过修改密码门的事件,各有三组数据所有
的操作符都是相同的。