#728. 奇怪的机器
奇怪的机器
题目描述
有 台按顺时针排列的机器,。每台机器的类型为 A 或 B。机器按顺时针编号为 ,第 台机器的类型记作 。机器对当前持有的整数 做如下更新:
- 类型 A:将 减 ,即 ;
- 类型 B:将 置为其二分之一向下取整,即 。
你有 个查询,每个查询给出一个整数 。对于单个查询,从机器 出发,初始持有整数 。每秒钟按顺序执行以下两步:
- 当前机器根据其类型更新 ;
- 顺时针移动到下一个机器(若当前在第 台, 则移动到 ,若在第 台则移动到 )。
当且仅当 变为 时停止。对于每个查询,求 变为 所需的秒数。
注意:不同查询之间互不影响(每次从初始状态开始独立模拟)。
输入格式
输入包含若干测试用例:
-
第 行:整数 ,表示测试用例个数。()
-
随后对每个测试用例,包含 行:
- 第 行:两个整数 和 (,) —— 机器数量与查询数量。
- 第 行:长度为 的字符串 ,每个字符为
A或B,表示各台机器的类型(,第 个字符为 )。 - 第 行: 个整数 ,表示每个查询的初始整数()。
- 所有测试用例中 的总和不超过 。对 的总和没有特殊限制。
输出格式
对每个测试用例输出 一行,该行包含 个整数(用空格分隔),分别为对应 个查询的答案:每个初始值 变为 所需的秒数。
样例输入
3
2 2
BA
3 4
1 1
B
20
6 4
BAABBA
2 8 32 95
样例输出
2
3
5
2
5
8
11
说明
样例解释
-
样例 中,第一个查询 (机器序列
B,A):- 在机器 (
B)上:; - 移到机器 (
A):。共 秒。
- 在机器 (
-
样例 中,第二个查询 :
- 机器 (
B):; - 机器 (
A):; - 机器 (
B):,共 秒。
- 机器 (
-
样例 2(只有一台
B机,):每秒 ,需要 次直到 。