#P10926. Happybob's Magic (UBC001F)
Happybob's Magic (UBC001F)
题目描述
Happybob 正在游戏里研究一排灯,总共 个,编号为 。Happybob 有两个技能。
一技能(按下 B
释放)释放一次,所有的灯亮变成灭,灭变成亮。
二技能(按下 D
释放)就厉害了,每释放一次,假设释放前的所有亮着的灯的编号组成的集合是 ,那么对于 的所有 个子集(包含空集) ,Happybob 会把第 盏灯点亮。这里的 表示 集合的大小, 表示将集合 的所有元素进行二进制按位异或得到的结果。特别地,。
现在有一个 B
,D
构成的施法序列 (意义如上),一个灯的初始状态序列(第 个版本),以及一个变量 。Happybob 有 次询问,每次询问可能是:
1 v l r
:将 加 ,对第 个版本依次执行 到 的施法操作,将结果存入第 个版本中,并问第 个版本中有多少盏灯是亮的。2 v k
:问第 个版本的第 盏灯是不是亮的。是输出 ,否则输出 。3 v k
:设第 个版本是从第 个版本执行了 次施法操作变过来的,问有多少次施法操作之后,第 盏灯是亮的(原来是亮的不算)。
对于第三种询问,这里的 和 具体定义如下:假设进行某一次第一种询问后 ,则 等于那一次询问给定的 , 即那一次询问给定的操作序列 的长度。
保证 (如果是第一个操作,则是加 前的 ;如果是第三个操作,还保证 )。
输入格式
第 行, 个整数 ;
第 行, 个整数 ;
第 行, 个字符串 (下标从 开始),对于每个满足 的整数 ,如果 是 B
,那么表示 Happybob 释放了一次一技能,否则他释放了一次二技能;
接下来 行,每行 个或 个非负整数,表示一个询问。
输出格式
行,第 行一个整数,表示第 个询问的结果。
3 10 6
0 1 0 1 0 1 0 0
BDBDBDDBBD
1 0 1 5
1 0 8 10
1 0 6 8
2 2 4
2 3 4
3 1 3
7
8
0
1
0
2
提示
样例说明
版本编号 | 灯的状态 |
---|---|
对于最后一次询问,每次施法操作后的状态如下:
操作 | 灯的状态 |
---|---|
初始值 | |
B |
|
BD |
|
BDB |
|
BDBD |
|
BDBDB |
第 盏灯亮了 次。
数据范围
对于 的数据, ,,,,。保证 中只含字符 B
与 D
(可能不含 B
或不含 D
),且 的长度为 。