欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1633C.Kill the Monster
Kill the Monster
题目描述
Monocarp 正在玩一款电脑游戏。在这款游戏中,他的角色需要与不同的怪物战斗。
角色与怪物之间的战斗规则如下。假设角色初始生命值为 ,攻击力为 ;怪物初始生命值为 ,攻击力为 。战斗由若干回合组成:
- 角色攻击怪物,使怪物的生命值减少 ;
- 怪物攻击角色,使角色的生命值减少 ;
- 角色再次攻击怪物,使怪物的生命值减少 ;
- 怪物再次攻击角色,使角色的生命值减少 ;
- 以此类推,直到战斗结束。
当某一方的生命值变为非正数(即 或更小)时,战斗结束。如果怪物的生命值变为非正数,则角色获胜,否则怪物获胜。
Monocarp 的角色当前生命值为 ,攻击力为 。他想要击败一个生命值为 ,攻击力为 的怪物。在战斗开始前,Monocarp 可以花费最多 枚金币来升级角色的武器和/或护甲;每次升级消耗一枚金币,每次武器升级会使角色的攻击力增加 ,每次护甲升级会使角色的生命值增加 。
如果 Monocarp 能够最优地分配金币进行升级,他的角色能否击败怪物?
输入格式
第一行包含一个整数 (),表示测试用例的数量。每个测试用例包含三行:
第一行包含两个整数 和 (;),表示角色的生命值和攻击力;
第二行包含两个整数 和 (;),表示怪物的生命值和攻击力;
第三行包含三个整数 、 和 (;;),分别表示 Monocarp 最多可以花费的金币数、每次武器升级增加的攻击力、每次护甲升级增加的生命值。
所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,如果通过最优分配升级,Monocarp 能够击败怪物,则输出 YES;否则输出 NO。
说明/提示
在第一个样例中,Monocarp 可以花费一枚金币升级武器(攻击力变为 ),此时战斗过程中的生命值变化如下:$(h_C, h_M) = (25, 9) \rightarrow (25, 4) \rightarrow (5, 4) \rightarrow (5, -1)$。战斗以 Monocarp 的胜利结束。
在第二个样例中,Monocarp 无法击败怪物。
在第三个样例中,Monocarp 没有金币,无法进行升级。但初始属性已经足够击败怪物。
在第四个样例中,Monocarp 有 枚金币。要击败怪物,他需要花费 枚金币升级武器, 枚金币升级护甲。
由 ChatGPT 4.1 翻译
样例
4
25 4
9 20
1 1 10
25 4
12 20
1 1 10
100 1
45 2
0 4 10
9 2
69 2
4 2 7
YES
NO
YES
YES
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |