题目描述
定义一种二元位运算为 ⊙ ,运算数均在区间 [0,2w) 内,他使用数字门进行运算,运算法则由一个长度为 w 的字符串构成,设为 s,s 仅包含 A,O,X,a,o,x,分别表示 与,或,异或,与非,或非,同或,表示每一位的运算法则。以下是这些位运算的真值表,p,q 为参与运算的两个数:
$$\begin{matrix}\texttt{p\ q\ A\ O\ X\ a\ o\ x}\\\texttt{0\ 0\ 0\ 0\ 0\ 1\ 1\ 1}\\\texttt{0\ 1\ 0\ 1\ 1\ 1\ 0\ 0}\\\texttt{1\ 0\ 0\ 1\ 1\ 1\ 0\ 0}\\\texttt{1\ 1\ 1\ 1\ 0\ 0\ 0\ 1}\end{matrix}
$$
具体地,x⊙y (s)=z 的运算方式如下:
- z 的二进制的从高到低第 i 位的结果是 x 和 y 的第 i 位通过 si 对应的运算得到的。
给定 n 个 [0,2w) 中的数 a1,a2,⋯,an 和 q 组询问,每次询问给定门运算的运算法则 s,询问有多少对有序对 (x,y) 满足 ax⊙ay=z(注意 x 可以等于 y)。
输入格式
第一行四个正整数 T,w,n,q,分别表示测试点编号,运算法则长度,a 序列长度和询问数量。
第二行 n 个整数,表示 a1,a2,…,an。
接下来 q 行,每行一个字符串 s 和一个非负整数 z。
输出格式
对于每个询问,输出一个非负整数,表示符合要求的有序对 (x,y) 数量。
0 3 4 3
3 3 7 0
XAo 0
XAX 5
XaA 2
4
2
5
0 5 10 5
9 14 29 16 18 14 20 6 23 16
axaxa 0
aaOOa 0
OaOxO 0
OaOOa 0
axaaO 0
2
0
0
1
0
提示
测试点编号 |
w≤ |
n≤ |
q≤ |
特殊性质 |
1∼3 |
16 |
100 |
10 |
无 |
4∼5 |
8 |
105 |
6∼9 |
10 |
104 |
10∼12 |
11 |
3×104 |
13∼14 |
12 |
5×104 |
15∼16 |
13 |
7×104 |
17∼19 |
14 |
105 |
20∼21 |
16 |
si 仅包含 O,a,x,zi=0 |
22∼25 |
无 |
对于 100% 的数据:1≤w≤16,1≤n≤105,1≤q≤105,0≤zi,ai<2w,∣si∣=w 且 si 仅包含 A,O,X,a,o,x。