#P7670. [JOI2018] Snake Escaping

[JOI2018] Snake Escaping

题目描述

JOI 实验室有 2L2^L 条毒蛇。蛇的编号为 0,1,,2L10,1,\cdots,2^L−1。每条蛇从头到尾分为 LL 个部分。每个部分的颜色是蓝色或红色。 对于毒蛇 ii,令 i=k=1Lck2Lki = \sum_{k=1}^{L} c_k2^{L-k}0ck10 \leq c_k \leq 1)为 ii 的二进制表达式。那么,

  • 如果 ck=0c_k=0,毒蛇 ii 从头开始的第 kk 部分的颜色是蓝色,
  • 如果 ck=1c_k=1,毒蛇 ii 从头开始的第 kk 部分的颜色是红色。

每条毒蛇都有一个 0099 之间的整数,包括 0099,为毒性。给出一个由 0,1,2,3,4,5,6,7,8,9\texttt{0,1,2,3,4,5,6,7,8,9} 组成的长度为 2L2^L 的字符串 SS。第 ii 个字符(1i2L1 \leq i \leq 2^L)是毒蛇 i1i−1 的毒性。由于毒蛇行动迅速,所以经常从 JOI 实验室逃走。住在实验室附近的人向 JOI 实验室投诉,他们看到毒蛇从实验室逃逸。您将收到 QQ 天的投诉清单。 第 dd 天的投诉(1dQ1 \leq d \leq Q)是一个长度为 LL 的字符串 TdT_d,由 0,1,?\texttt{0,1,?} 组成。

  • 如果 TdT_d 的第 jj 个字符(1jL1 \leq j ≤ L)为 0\texttt{0},这意味着第 dd 天从实验室逃出的每条毒蛇的第 jj 个部分是蓝色的,
  • 如果 TdT_d 的第 jj 个字符(1jL1 \leq j \leq L)为 1\texttt{1},这意味着第 dd 天从实验室逃出的每条毒蛇的第 jj 部分是红色的,并且
  • 如果 TdT_d 的第 jj 个字符(1jL1 \leq j \leq L)为 ?\texttt{?},这意味着人们没有提供关于第 dd 天从实验室逃逸的毒蛇的第 jj 部分的信息。

所有的投诉都是准确的信息。所有从实验室逃逸的毒蛇都在同一天被 JOI 实验室的工作人员收留。可能发生同一条蛇在不同的日子逃脱。
JOI 实验室执行主任 K 教授为了估计毒蛇逃逸的风险,想知道可能逃出实验室的毒蛇的毒性总和。 你的任务是编写一个程序,根据 QQ 天的投诉列表,计算每天可能从实验室逃逸的蛇的毒性总和。
现给定描述毒蛇毒性的字符串 SSQQ 天的投诉列表,请编写一个程序来计算每天可能从实验室逃逸的蛇的毒性总和。
请注意,此任务的内存限制很小。

输入格式

第一行包含两个空格分隔的整数 LLQQ,分别是每条毒蛇的部位数和投诉天数。第二行包含长度为 2L2^L 的字符串 SS,描述了毒蛇的毒性。后面 QQ 行的第 dd 行包含一个长度为 LL 的字符串 TdT_d,为第 dd 天的投诉。

输出格式

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

3 5
12345678
000
0??
1?0
?11
???
1
10
12
12
36
4 8
3141592653589793
0101
?01?
??1?
?0??
1?00
01?1
??10
????
9
18
38
30
14
15
20
80

提示

数据规模与约定

对于 100%100 \% 的数据,1L201 \leq L \leq 201Q1061 \leq Q \leq 10^6SS 是长度为 2L2^L 的字符串,字符串 SS0,1,2,3,4,5,6,7,8,9\texttt{0,1,2,3,4,5,6,7,8,9} 组成,TdT_d 是长度为 LL1dQ1 \leq d \leq Q)的字符串,字符串 TdT_d0,1,?\texttt{0,1,?}1dQ1 \leq d \leq Q)组成。

  • Subtask 1155 points):L10L \leq 10Q1000Q \leq 1000
  • Subtask 2277 points):L10L \leq 10
  • Subtask 331010 points):L13L \leq 13
  • Subtask 445353 points):Q5000Q \leq 5000
  • Subtask 552525 points):没有额外的限制。

样例说明

对于样例 11L=3L=3,共 23=82^3=8条毒蛇,它们中的每一条都分为 33 个部分。 投诉时间为 55 天。

  • 第一天,可能逃出实验室的毒蛇只有毒蛇 00。毒性总和为 11
  • 第二天,可能从实验室逃逸的毒蛇是毒蛇 0,1,2,30,1,2,3。毒性总和为 1010
  • 第三天,可能从实验室逃逸的毒蛇是毒蛇 4,64,6。毒性总和为 1212
  • 第四天,可能从实验室逃逸的毒蛇是毒蛇 3,73,7。毒性总和是 1212
  • 第五天,可能从实验室逃逸的毒蛇是毒蛇 0,1,2,3,4,5,6,70,1,2,3,4,5,6,7。毒性总和为 3636

题目说明:

来源于 The 17th Japanese Olympiad in Informatics (JOI 2017/2018) Final Round 的 T5:Snake Escaping
由 @求学的企鹅 翻译整理。