CF1922D Berserk Monsters

题目描述

Monocarp 正在玩一款电脑游戏(又一次)。你猜他在做什么?没错,就是在杀怪物。 有 $n$ 个怪物排成一排,从 $1$ 到 $n$ 编号。第 $i$ 个怪物有两个参数:攻击值 $a_i$ 和防御值 $d_i$。为了杀死这些怪物,Monocarp 对它们施加了狂暴法术,让它们互相攻击,而不是攻击 Monocarp 的角色。 战斗共进行 $n$ 轮。每一轮,发生如下事件: - 首先,每个存活的怪物 $i$ 会对其左边最近的存活怪物(如果存在)和右边最近的存活怪物(如果存在)各造成 $a_i$ 点伤害; - 然后,每个在本轮受到的总伤害超过其防御值 $d_j$ 的存活怪物 $j$ 会死亡。也就是说,第 $j$ 个怪物当且仅当其防御值 $d_j$ 严格小于本轮受到的总伤害时会死亡。 请你计算每一轮中死亡的怪物数量。

输入格式

第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 每个测试用例包含三行: - 第一行包含一个整数 $n$($1 \le n \le 3 \cdot 10^5$); - 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 10^9$); - 第三行包含 $n$ 个整数 $d_1, d_2, \dots, d_n$($1 \le d_i \le 10^9$)。 输入的额外限制:所有测试用例中 $n$ 的总和不超过 $3 \cdot 10^5$。

输出格式

对于每个测试用例,输出 $n$ 个整数。第 $i$ 个整数表示第 $i$ 轮中死亡的怪物数量。

说明/提示

示例第一个测试用例的解释: 在第一轮中,发生如下事件: - 怪物 $1$ 对怪物 $2$ 造成 $3$ 点伤害; - 怪物 $2$ 对怪物 $1$ 和怪物 $3$ 各造成 $4$ 点伤害; - 怪物 $3$ 对怪物 $2$ 和怪物 $4$ 各造成 $7$ 点伤害; - 怪物 $4$ 对怪物 $3$ 和怪物 $5$ 各造成 $5$ 点伤害; - 怪物 $5$ 对怪物 $4$ 造成 $10$ 点伤害; - 怪物 $1$ 没有死亡,因为它受到 $4$ 点伤害,防御值为 $4$; - 怪物 $2$ 死亡,因为它受到 $10$ 点伤害,防御值为 $9$; - 怪物 $3$ 死亡,因为它受到 $9$ 点伤害,防御值为 $1$; - 怪物 $4$ 没有死亡,因为它受到 $17$ 点伤害,防御值为 $18$; - 怪物 $5$ 死亡,因为它受到 $5$ 点伤害,防御值为 $1$。 第一轮后,怪物 $1$ 和 $4$ 仍然存活。 在第二轮中,发生如下事件: - 怪物 $1$ 对怪物 $4$ 造成 $3$ 点伤害; - 怪物 $4$ 对怪物 $1$ 造成 $5$ 点伤害; - 怪物 $1$ 死亡,因为它受到 $5$ 点伤害,防御值为 $4$; - 怪物 $4$ 没有死亡,因为它受到 $3$ 点伤害,防御值为 $18$。 接下来的三轮,只有第 $4$ 个怪物存活,所以没有任何事情发生。 由 ChatGPT 4.1 翻译