CF2156B.Strange Machine

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Strange Machine

题目描述

nn 台机器按照环状排列,其中 nn 最多为 2020。每台机器都是类型 A 或类型 B。机器按顺时针编号为 11nn,第 ii 台机器的类型用 sis_i 表示。每台机器会对整数 xx 按其类型进行以下操作:

  • 类型 A:将 xx11。形式为 x:=x1x := x - 1
  • 类型 B:将 xx 替换为 x2\left\lfloor\frac{x}{2}\right\rfloor,即 x:=x2x := \left\lfloor\frac{x}{2}\right\rfloor,这里 y\lfloor y\rfloor 表示 yy 的向下取整,也就是不大于 yy 的最大整数。

你会得到 qq 个询问,每个询问提供一个整数 aa。对每个询问,从第 11 台机器开始,手里持有整数 aa。每一秒,按如下两步顺序执行:

  1. 当前机器根据自身类型操作 aa
  2. 顺时针移动到下一台机器:
    • 如果当前在机器 ii1in11 \le i \le n - 1),则移动到机器 i+1i+1
    • 如果当前在机器 nn,则回到机器 11

该过程持续到 aa 变为 00。对于每个询问,计算 aa 变为 00 需要的秒数。

注意所有询问互不影响。

输入格式

每个测试用例包含多组数据。第一行包含测试用例数 tt1t1041 \le t \le 10^4)。每组数据描述如下:

每组数据的第一行包含两个整数 nnqq1n201\le n\le 201q1041\le q\le 10^4),分别表示机器台数和询问数。

第二行是长度为 nn 的字符串 sss=n|s| = nsi=As_i =\mathtt{A}B\mathtt{B}),表示每台机器的类型。

第三行包含 qq 个整数 a1,a2,,aqa_1, a_2, \ldots, a_q1ai1091\le a_i\le 10^9),分别表示每个询问的起始整数。

特别地,对所有测试用例,qq 的总和不超过 10410^4

输出格式

对于每组数据,输出 qq 个整数,分别对应每个询问的答案。

说明/提示

在第一个测试用例中,询问情况如下:

  • 询问 11a=3a = 3

    1. 从机器 11 开始。机器 11aa 变为 32=1\left\lfloor\frac{3}{2}\right\rfloor = 1
    2. 移动到机器 22。机器 22aa11,变为 11=01 - 1 = 0

    因此 aa 变为 00 共用 22 秒。

  • 询问 22a=4a = 4

    1. 从机器 11 开始。机器 11aa 变为 42=2\left\lfloor\frac{4}{2}\right\rfloor = 2
    2. 移动到机器 22。机器 22aa11,变为 21=12 - 1 = 1
    3. 回到机器 11。机器 11aa 变为 12=0\left\lfloor\frac{1}{2}\right\rfloor = 0

    因此 aa 变为 00 共用 33 秒。

在第二个测试用例中,唯一的询问起始 a=20a = 20

  1. 从机器 11 开始。机器 11aa 变为 202=10\left\lfloor\frac{20}{2}\right\rfloor = 10
  2. 留在机器 11。机器 11aa 变为 102=5\left\lfloor\frac{10}{2}\right\rfloor = 5
  3. 留在机器 11。机器 11aa 变为 52=2\left\lfloor\frac{5}{2}\right\rfloor = 2
  4. 留在机器 11。机器 11aa 变为 22=1\left\lfloor\frac{2}{2}\right\rfloor = 1
  5. 留在机器 11。机器 11aa 变为 12=0\left\lfloor\frac{1}{2}\right\rfloor = 0

因此 aa 变为 00 共用 55 秒。

由 ChatGPT 5 翻译

样例

3
2 2
BA
3 4
1 1
B
20
6 4
BAABBA
2 8 32 95
2
3
5
2
5
8
11

在线编程 IDE

建议全屏模式获得最佳体验