luogu#P10926. Happybob's Magic (UBC001F)

Happybob's Magic (UBC001F)

题目描述

Happybob 正在游戏里研究一排灯,总共 2n2^n 个,编号为 02n10\sim 2^n-1。Happybob 有两个技能。

一技能(按下 B 释放)释放一次,所有的灯亮变成灭,灭变成亮。

二技能(按下 D 释放)就厉害了,每释放一次,假设释放前的所有亮着的灯的编号组成的集合是 XX,那么对于 XX所有 2X2^{|X|} 个子集(包含空集) YY,Happybob 会把第 (Y)\bigoplus(Y) 盏灯点亮。这里的 X|X| 表示 XX 集合的大小,(Y)\bigoplus(Y) 表示将集合 YY 的所有元素进行二进制按位异或得到的结果。特别地,()=0\bigoplus(\varnothing) = 0

现在有一个 BD 构成的施法序列 S(S=m)S(|S|=m)(意义如上),一个灯的初始状态序列(第 00 个版本)a0,a1,,a2n1a_0,a_1,\cdots,a_{2^n-1},以及一个变量 vid=0vid=0。Happybob 有 qq 次询问,每次询问可能是:

  1. 1 v l r:将 vidvid11,对第 vv 个版本依次执行 SlS_lSrS_r 的施法操作,将结果存入第 vidvid 个版本中,并问第 vidvid 个版本中有多少盏灯是亮的。
  2. 2 v k:问第 vv 个版本的第 kk 盏灯是不是亮的。是输出 11,否则输出 00
  3. 3 v k:设第 vv 个版本是从第 vv' 个版本执行了 tt 次施法操作变过来的,问有多少次施法操作之后,第 kk 盏灯是亮的(原来是亮的不算)。

对于第三种询问,这里的 vv'tt 具体定义如下:假设进行某一次第一种询问后 vid=vvid = v,则 vv' 等于那一次询问给定的 vvtt 即那一次询问给定的操作序列 SlrS_{l\cdots r} 的长度。

保证 0vvid0\le v\le vid(如果是第一个操作,则是加 11 前的 vidvid;如果是第三个操作,还保证 v>0v>0)。

输入格式

11 行,33 个整数 n,m,qn,m,q

22 行,2n2^n 个整数 a0,a1,,a2n1a_0,a_1,\cdots,a_{2^n-1}

33 行,11 个字符串 SS(下标从 11 开始),对于每个满足 1im1\le i\le m 的整数 ii,如果 SiS_iB,那么表示 Happybob 释放了一次一技能,否则他释放了一次二技能;

接下来 qq 行,每行 33 个或 44 个非负整数,表示一个询问。

输出格式

qq 行,第 ii 行一个整数,表示第 ii 个询问的结果。

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

提示

样例说明

版本编号 灯的状态
00 0101010001010100
11 0111111101111111
22 1111111111111111
33 0000000000000000

对于最后一次询问,每次施法操作后的状态如下:

操作 灯的状态
初始值 0101010001010100
B 1010101110101011
BD 11111111111\red11111
BDB 0000000000000000
BDBD 1000000010000000
BDBDB 01111111011\red11111

33 盏灯亮了 22 次。

数据范围

对于 100%100\% 的数据, 1n181\le n\le 181q2×1051\le q\le 2\times 10^5ai{0,1}a_i\in\{0, 1\}1lrm2×1051\le l\le r\le m\le 2\times 10^50k<2n0\le k<2^n。保证 SS 中只含字符 BD(可能不含 B 或不含 D),且 SS 的长度为 mm