AT_joi2018ho_e.毒蛇の脱走 (Snake Escaping)

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

在 JOI 研究所里饲养着 2L2^L 条毒蛇,每条毒蛇编号为 0,1,…,2L−10, 1, \ldots, 2^L - 1。每条毒蛇的身体从头部开始被分为 LL 个部分,每个部分要么是蓝色,要么是红色。对于毒蛇 ii,将 ii 用二进制表示为 i=∑k=1Lck2L−ki = \sum_{k=1}^{L} c_k 2^{L-k}(0≤ck≤10 \leq c_k \leq 1)时:

  • 若 ck=0c_k = 0,则毒蛇 ii 从头部数第 kk 个部分为蓝色;
  • 若 ck=1c_k = 1,则毒蛇 ii 从头部数第 kk 个部分为红色。

每条毒蛇都有一个称为“毒性”的整数值,范围在 00 到 99 之间。给定一个由 0 到 9 组成、长度为 2L2^L 的字符串 SS,第 ii 个字符(1≤i≤2L1 \leq i \leq 2^L)表示毒蛇 i−1i-1 的毒性。

毒蛇们行动迅速,经常会从 JOI 研究所逃脱。每当有毒蛇逃脱时,周边居民会向研究所投诉。

你将得到 QQ 天的投诉信息。第 dd 天(1≤d≤Q1 \leq d \leq Q)的投诉信息用一个由 0、1、? 组成、长度为 LL 的字符串 TdT_d 表示:

  • TdT_d 的第 jj 个字符(1≤j≤L1 \leq j \leq L)为 0 时,表示第 dd 天逃脱的所有毒蛇从头部数第 jj 个部分为蓝色;
  • TdT_d 的第 jj 个字符为 1 时,表示第 dd 天逃脱的所有毒蛇从头部数第 jj 个部分为红色;
  • TdT_d 的第 jj 个字符为 ? 时,表示居民未能提供该部分的信息。

所有投诉信息都是准确的。当天逃脱的毒蛇会被研究所工作人员当天抓回,之后不会再次逃脱。

为了评估毒蛇逃脱带来的风险,JOI 研究所的 K 理事长希望知道每天可能逃脱的毒蛇的毒性总和。你的任务是,根据 QQ 天的投诉信息,编写程序计算每天可能逃脱的毒蛇的毒性总和。

输入格式

从标准输入读取以下内容。

  • 第 11 行包含两个整数 L,QL, Q,用空格分隔,分别表示毒蛇身体部分的数量和投诉天数。
  • 第 22 行包含一个长度为 2L2^L 的字符串 SS,表示每条毒蛇的毒性。
  • 接下来的 QQ 行,第 dd 行(1≤d≤Q1 \leq d \leq Q)包含一个长度为 LL 的字符串 TdT_d,表示第 dd 天的投诉信息。

输出格式

输出 QQ 行。第 dd 行输出第 dd 天可能逃脱的毒蛇的毒性总和。

输入输出样例

  • 输入#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

说明/提示

任务

给定毒蛇毒性字符串 SS 和 QQ 天的投诉信息,计算每天可能逃脱的毒蛇的毒性总和。

注意内存限制较小。

限制

所有输入数据满足以下条件:

  • 1≤L≤201 \leq L \leq 20。
  • 1≤Q≤1 000 0001 \leq Q \leq 1\,000\,000。
  • SS 是长度为 2L2^L 的字符串。
  • SS 仅包含 0 到 9 的字符。
  • TdT_d 是长度为 LL 的字符串(1≤d≤Q1 \leq d \leq Q)。
  • TdT_d 仅包含 0、1、? 字符(1≤d≤Q1 \leq d \leq Q)。

子任务

子任务 1 [5 分]

满足以下条件:

  • L≤10L \leq 10。
  • Q≤1 000Q \leq 1\,000。

子任务 2 [7 分]

  • 满足 L≤10L \leq 10。

子任务 3 [10 分]

  • 满足 L≤13L \leq 13。

子任务 4 [53 分]

  • 满足 Q≤50 000Q \leq 50\,000。

子任务 5 [25 分]

  • 无额外限制。

样例解释 1

在此输入样例中,L=3L = 3。毒蛇被分为 33 个部分,共有 23=82^3 = 8 条毒蛇。投诉持续 55 天。

  • 第 11 天可能逃脱的毒蛇只有毒蛇 00,毒性总和为 11。
  • 第 22 天可能逃脱的毒蛇为毒蛇 0,1,2,30, 1, 2, 3,毒性总和为 1010。
  • 第 33 天可能逃脱的毒蛇为毒蛇 4,64, 6,毒性总和为 1212。
  • 第 44 天可能逃脱的毒蛇为毒蛇 3,73, 7,毒性总和为 1212。
  • 第 55 天可能逃脱的毒蛇为毒蛇 0,1,2,3,4,5,6,70, 1, 2, 3, 4, 5, 6, 7,毒性总和为 3636。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页