luogu#P12020. CF1033F 加强版

    ID: 36375 远端评测题 10000ms 2048MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>动态规划 DP容斥原理快速沃尔什变换 FWT根号分治

CF1033F 加强版

题目描述

定义一种二元位运算为 \odot ,运算数均在区间 [0,2w)[0,2^w) 内,他使用数字门进行运算,运算法则由一个长度为 ww 的字符串构成,设为 ssss 仅包含 A,O,X,a,o,x\texttt{A,O,X,a,o,x},分别表示 与,或,异或,与非,或非,同或,表示每一位的运算法则。以下是这些位运算的真值表,p,qp,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} $$

具体地,xy (s)=zx\odot y \ (s) =z 的运算方式如下:

  • zz 的二进制的从高到低ii 位的结果是 xxyy 的第 ii 位通过 sis_i 对应的运算得到的。

给定 nn[0,2w)[0,2^w) 中的数 a1,a2,,ana_1,a_2,\cdots ,a_nqq 组询问,每次询问给定门运算的运算法则 ss,询问有多少对有序对 (x,y)(x,y) 满足 axay=za_x \odot a_y = z(注意 xx 可以等于 yy)。

输入格式

第一行四个正整数 T,w,n,qT,w,n,q,分别表示测试点编号,运算法则长度,aa 序列长度和询问数量。

第二行 nn 个整数,表示 a1,a2,,ana_1,a_2,\dots,a_n

接下来 qq 行,每行一个字符串 ss 和一个非负整数 zz

输出格式

对于每个询问,输出一个非负整数,表示符合要求的有序对 (x,y)(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

提示

测试点编号 ww\leq nn\leq qq\leq 特殊性质
131\sim 3 1616 100100 1010
454\sim 5 88 10510^5
696\sim9 1010 10410^4
101210\sim 12 1111 3×1043\times10^4
131413\sim14 1212 5×1045\times10^4
151615\sim16 1313 7×1047\times10^4
171917\sim19 1414 10510^5
202120\sim21 1616 sis_i 仅包含 O,a,x\texttt{O,a,x}zi=0z_i=0
222522\sim25

对于 100%100\% 的数据:1w161\leq w\leq 161n1051\leq n\leq10^51q1051\leq q\leq 10^50zi,ai<2w0\leq z_i,a_i<2^wsi=w|s_i|=wsis_i 仅包含 A,O,X,a,o,x\texttt{A,O,X,a,o,x}