CF1633C Kill the Monster

题目描述

Monocarp 正在玩一款电脑游戏。在这款游戏中,他的角色需要与不同的怪物战斗。 角色与怪物之间的战斗规则如下。假设角色初始生命值为 $h_C$,攻击力为 $d_C$;怪物初始生命值为 $h_M$,攻击力为 $d_M$。战斗由若干回合组成: 1. 角色攻击怪物,使怪物的生命值减少 $d_C$; 2. 怪物攻击角色,使角色的生命值减少 $d_M$; 3. 角色再次攻击怪物,使怪物的生命值减少 $d_C$; 4. 怪物再次攻击角色,使角色的生命值减少 $d_M$; 5. 以此类推,直到战斗结束。 当某一方的生命值变为非正数(即 $0$ 或更小)时,战斗结束。如果怪物的生命值变为非正数,则角色获胜,否则怪物获胜。 Monocarp 的角色当前生命值为 $h_C$,攻击力为 $d_C$。他想要击败一个生命值为 $h_M$,攻击力为 $d_M$ 的怪物。在战斗开始前,Monocarp 可以花费最多 $k$ 枚金币来升级角色的武器和/或护甲;每次升级消耗一枚金币,每次武器升级会使角色的攻击力增加 $w$,每次护甲升级会使角色的生命值增加 $a$。 如果 Monocarp 能够最优地分配金币进行升级,他的角色能否击败怪物?

输入格式

第一行包含一个整数 $t$($1 \le t \le 5 \cdot 10^4$),表示测试用例的数量。每个测试用例包含三行: 第一行包含两个整数 $h_C$ 和 $d_C$($1 \le h_C \le 10^{15}$;$1 \le d_C \le 10^9$),表示角色的生命值和攻击力; 第二行包含两个整数 $h_M$ 和 $d_M$($1 \le h_M \le 10^{15}$;$1 \le d_M \le 10^9$),表示怪物的生命值和攻击力; 第三行包含三个整数 $k$、$w$ 和 $a$($0 \le k \le 2 \cdot 10^5$;$0 \le w \le 10^4$;$0 \le a \le 10^{10}$),分别表示 Monocarp 最多可以花费的金币数、每次武器升级增加的攻击力、每次护甲升级增加的生命值。 所有测试用例中 $k$ 的总和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,如果通过最优分配升级,Monocarp 能够击败怪物,则输出 YES;否则输出 NO。

说明/提示

在第一个样例中,Monocarp 可以花费一枚金币升级武器(攻击力变为 $5$),此时战斗过程中的生命值变化如下:$(h_C, h_M) = (25, 9) \rightarrow (25, 4) \rightarrow (5, 4) \rightarrow (5, -1)$。战斗以 Monocarp 的胜利结束。 在第二个样例中,Monocarp 无法击败怪物。 在第三个样例中,Monocarp 没有金币,无法进行升级。但初始属性已经足够击败怪物。 在第四个样例中,Monocarp 有 $4$ 枚金币。要击败怪物,他需要花费 $2$ 枚金币升级武器,$2$ 枚金币升级护甲。 由 ChatGPT 4.1 翻译