[JOI2018] Snake Escaping

题目描述

JOI 实验室有 $2^L$ 条毒蛇。蛇的编号为 $0,1,\cdots,2^L−1$。每条蛇从头到尾分为 $L$ 个部分。每个部分的颜色是蓝色或红色。 对于毒蛇 $i$,令 $i = \sum_{k=1}^{L} c_k2^{L-k}$($0 \leq c_k \leq 1$)为 $i$ 的二进制表达式。那么, - 如果 $c_k=0$,毒蛇 $i$ 从头开始的第 $k$ 部分的颜色是蓝色, - 如果 $c_k=1$,毒蛇 $i$ 从头开始的第 $k$ 部分的颜色是红色。 每条毒蛇都有一个 $0$ 到 $9$ 之间的整数,包括 $0$ 和 $9$,为毒性。给出一个由 $\texttt{0,1,2,3,4,5,6,7,8,9}$ 组成的长度为 $2^L$ 的字符串 $S$。第 $i$ 个字符($1 \leq i \leq 2^L$)是毒蛇 $i−1$ 的毒性。由于毒蛇行动迅速,所以经常从 JOI 实验室逃走。住在实验室附近的人向 JOI 实验室投诉,他们看到毒蛇从实验室逃逸。您将收到 $Q$ 天的投诉清单。 第 $d$ 天的投诉($1 \leq d \leq Q$)是一个长度为 $L$ 的字符串 $T_d$,由 $\texttt{0,1,?}$ 组成。 - 如果 $T_d$ 的第 $j$ 个字符($1 \leq j ≤ L$)为 $\texttt{0}$,这意味着第 $d$ 天从实验室逃出的每条毒蛇的第 $j$ 个部分是蓝色的, - 如果 $T_d$ 的第 $j$ 个字符($1 \leq j \leq L$)为 $\texttt{1}$,这意味着第 $d$ 天从实验室逃出的每条毒蛇的第 $j$ 部分是红色的,并且 - 如果 $T_d$ 的第 $j$ 个字符($1 \leq j \leq L$)为 $\texttt{?}$,这意味着人们没有提供关于第 $d$ 天从实验室逃逸的毒蛇的第 $j$ 部分的信息。 所有的投诉都是准确的信息。所有从实验室逃逸的毒蛇都在同一天被 JOI 实验室的工作人员收留。可能发生同一条蛇在不同的日子逃脱。 JOI 实验室执行主任 K 教授为了估计毒蛇逃逸的风险,想知道可能逃出实验室的毒蛇的毒性总和。 你的任务是编写一个程序,根据 $Q$ 天的投诉列表,计算每天可能从实验室逃逸的蛇的毒性总和。 现给定描述毒蛇毒性的字符串 $S$ 和 $Q$ 天的投诉列表,请编写一个程序来计算每天可能从实验室逃逸的蛇的毒性总和。 请注意,此任务的内存限制很小。

输入输出格式

输入格式


第一行包含两个空格分隔的整数 $L$,$Q$,分别是每条毒蛇的部位数和投诉天数。第二行包含长度为 $2^L$ 的字符串 $S$,描述了毒蛇的毒性。后面 $Q$ 行的第 $d$ 行包含一个长度为 $L$ 的字符串 $T_d$,为第 $d$ 天的投诉。

输出格式


共 $Q$ 行,第 $d$ 行应包含一个整数,即第 $d$ 天可能从实验室逃逸的蛇的毒性总和。

输入输出样例

输入样例 #1

3 5
12345678
000
0??
1?0
?11
???

输出样例 #1

1
10
12
12
36

输入样例 #2

4 8
3141592653589793
0101
?01?
??1?
?0??
1?00
01?1
??10
????

输出样例 #2

9
18
38
30
14
15
20
80

说明

#### 数据规模与约定 对于 $100 \%$ 的数据,$1 \leq L \leq 20$,$1 \leq Q \leq 10^6$,$S$ 是长度为 $2^L$ 的字符串,字符串 $S$ 由 $\texttt{0,1,2,3,4,5,6,7,8,9}$ 组成,$T_d$ 是长度为 $L$($1 \leq d \leq Q$)的字符串,字符串 $T_d$ 由 $\texttt{0,1,?}$($1 \leq d \leq Q$)组成。 - Subtask $1$($5$ points):$L \leq 10$,$Q \leq 1000$。 - Subtask $2$($7$ points):$L \leq 10$。 - Subtask $3$($10$ points):$L \leq 13$。 - Subtask $4$($53$ points):$Q \leq 5000$。 - Subtask $5$($25$ points):没有额外的限制。 #### 样例说明 **对于样例 $1$**:$L=3$,共 $2^3=8$条毒蛇,它们中的每一条都分为 $3$ 个部分。 投诉时间为 $5$ 天。 - 第一天,可能逃出实验室的毒蛇只有毒蛇 $0$。毒性总和为 $1$。 - 第二天,可能从实验室逃逸的毒蛇是毒蛇 $0,1,2,3$。毒性总和为 $10$。 - 第三天,可能从实验室逃逸的毒蛇是毒蛇 $4,6$。毒性总和为 $12$。 - 第四天,可能从实验室逃逸的毒蛇是毒蛇 $3,7$。毒性总和是 $12$。 - 第五天,可能从实验室逃逸的毒蛇是毒蛇 $0,1,2,3,4,5,6,7$。毒性总和为 $36$。 #### 题目说明: 来源于 The 17th Japanese Olympiad in Informatics (JOI 2017/2018) Final Round 的 [T5:Snake Escaping](https://www.ioi-jp.org/joi/2017/2018-ho/2018-ho-t5-en.pdf)。 由 @[求学的企鹅](/user/271784) 翻译整理。