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 翻译