#P14125. [SCCPC 2021] Monster Hunter

[SCCPC 2021] Monster Hunter

Description

Ema 是游戏中最强的“carry”玩家。在游戏里,她需要消灭 mm 个怪物。第 ii 个怪物初始有 hih_i 点生命值(HP)。每当 Ema 攻击一个怪物时,该怪物的生命值会减少她的攻击力。当怪物的生命值小于等于 00 时,该怪物就会被消灭。

为了让游戏更加有趣,Ema 的攻击力不是一个固定值。她有一个基础攻击力序列 a1,a2,,ana_1, a_2, \cdots, a_n,伤害值是不断重复该序列获得的。形式化地,设第 ii 次攻击造成的伤害为 rir_i,则有

$$r_{i}= \left \{ \begin{array}{ll} a_i & 1 \leq i \leq n \\ r_{i - n} & i > n \end{array} \right.$$

为了尽快消灭怪物,Ema 想要攻击次数尽量少。你能帮助她计算消灭所有怪物所需的最少攻击次数吗?

Input Format

有多组测试数据。输入的第一行为一个整数 TT,表示测试组数。对于每组测试数据:

第一行包含一个整数 nn1n1051 \leq n \leq 10^5),表示基础攻击力序列的长度。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \cdots, a_n1ai31 \leq a_i \leq 3),表示基础攻击力序列。

第三行包含一个整数 mm1m1051 \leq m \leq 10^5),表示怪物的数量。

第四行包含 mm 个整数 h1,h2,,hmh_1, h_2, \cdots, h_m1hi1091 \leq h_i \leq 10^9),其中 hih_i 表示第 ii 个怪物的初始生命值。

保证所有测试用例中 nn 的和及 mm 的和均不超过 10510^5

Output Format

对于每组测试数据,输出一行一个整数,表示消灭所有怪物所需的最少攻击次数。

2
2
3 2
3
2 4 2
5
1 2 3 2 1
2
3 3
4
3

Hint

对于第一个样例,伤害序列为 3,2,3,2,3,2,3, 2, 3, 2, 3, 2, \cdots。可以按顺序依次攻击怪物 11223322,就可以消灭所有 33 个怪物。

对于第二个样例,可以依次攻击怪物 222211

由 ChatGPT 5 翻译