#1081. [202312月赛] 冒险旅程
[202312月赛] 冒险旅程
背景
小方小块小鸟来到了方块鸟大陆。方块鸟大陆上有许许多多有意思的地区和地下城、迷宫等待冒险者们挑战。通过击败BOSS还能拿到珍贵的战利品。 我们需要通过编程尽可能的为小方小块小鸟提供帮助。
描述
小方小块小鸟先是通过在练习场地刷史莱姆升级到「新手的冒险者」级别,再进行了一些祈福仪式。他们现在的初始状态分别是血量上限、攻击力、防御力。
现在,他们向着菜鸟平原出发,准备开始他们的方块鸟大陆首次探险之旅。工会导师在出发前给他们做最后的讲解,他把在方块鸟大陆地下城探险的过程告诉他们。
在地下城的探险过程中,冒险者们会按照顺序遇到个随机事件。在个事件后,如果冒险者仍然存活 (血量大于),则本次探险成功;如果在某个事件后,冒险者的血量小于或等于0,则冒险者被击败,本次探险失败。
事件分为如下类型:
事件类型 | 代号 |
---|---|
遇到怪物 | "BATTLE" |
发现宝箱 | "TREASURE" |
找到篝火 | "CAMPFIRE" |
- 当冒险者遇到怪物时,能通过怪物图鉴进行识别,得知怪物的血量、攻击力和防御力。 随后进入战斗环节,双方轮流进行攻击。双方各攻击一次,称为一个回合。每个回合中,均由冒险者先进行攻击。如果攻击方的攻击力小于被攻击方防御力,则本次攻击无效;否则被攻击方受到 (攻击方攻击力 - 被攻击方防御力) 的伤害, 损失相应的血量。血量小于等于0,则被击败,本次探险结束;否则继续下一轮攻击行动。如果战斗在第个回合结束后仍未分出胜负,则怪物会失去耐心而逃脱,冒险者以当前血量继续进行余下探险。
- 当冒险者发现宝箱时,会得到宝箱中的宝物。宝物有三种类型,分别为"POTION" ( 药水 )、"WEAPON" ( 武器 )、"ARMOR" ( 防具 ),宝物对冒险者的帮助如下:
宝物类型 | 功能 | 备注 |
---|---|---|
POTION | 增加本次探险过程的血量上限 | 获得时,仅提升血量上限,不会恢复血量 |
WEAPON | 增加本次探险过程中的攻击力 | |
ARMOR | 增加本次探险过程中的防御力 |
- 当冒险者找到篝火时,可以在篝火旁扎营休息,随后血量将恢复到血量上限。
假设你已经知道了冒险者的初始状态(包括血量上限、攻击力、防御力),以及在某次探险过程所发生的事件,请你编写程序,判定冒险者是否成功完成探险。
输入输出格式
输入
第一行为三个非负整数, , ()。表示冒险者初始状态下的血量上限、攻击力和防御力,以空格分割。
第二行为一个正整数,表示冒险中遇到的事件数量。 ()
随后行,每两行表示一个事件的信息,其中: 第一行为一个字符串 ,表示事件类型,为 "BATTLE"、 "TREASURE"、"CAMPFIRE"之一; 第二行为事件相关信息:
- 如果是BATTLE事件,则为怪物的血量、攻击力和防御力; ()
- 如果是TREASURE事件,则为宝物类型和对应属性增加的数值; ( 的值为 "POTION"、"WEAPON"、"ARMOR"之一 ; )
- 如果是CAMPFIRE事件,则为1。
输出
如果冒险者能成功完成探险,则输出探险完成时的剩余血量;如果探险失败,则输出探险者被击败时的血量。
样例
100 20 5
4
TREASURE
ARMOR 5
BATTLE
30 20 10
CAMPFIRE
1
BATTLE
100 15 10
55
样例一说明: 冒险者初始状态为100血量上限、20攻击力和5防御力。冒险过程中共计发生4个事件。 冒险者首先拿到了宝物,类型是防具,得到了5防御力的提升,随后探险过程中,防御力为10。 冒险者随后遇到了怪物,怪物有30血量、20攻击力和10防御力,冒险者先攻击,双方的战斗过程如下:
- 第一回合
冒险者攻击,冒险者攻击力 20 - 怪物防御力 10 = 10点伤害,怪物的血量从 30 变成 20。 怪物攻击,怪物攻击力20 - 冒险者防御力 10 = 10点伤害,冒险者的血量从100 变成 90。
- 第二回合
冒险者攻击,冒险者攻击力 20 - 怪物防御力 10 = 10点伤害,怪物的血量从 20 变成 10。 怪物攻击,怪物攻击力20 - 冒险者防御力 10 = 10点伤害,冒险者的血量从90 变成 80。
- 第三回合
冒险者攻击,冒险者攻击力 20 - 怪物防御力 10 = 10点伤害,怪物的血量从 10 变成 0。
冒险者击败了怪物,剩余血量为80。
冒险者随后找到了篝火,恢复血量到血量上限100。 冒险者随后再次遇到怪物,怪物有100血量、15攻击力和10防御力。战斗后,冒险者剩余55血量。
所有事件完成,冒险者探险成功,输出最后剩余血量55.
10 20 5
3
BATTLE
30 9999 10
CAMPFIRE
1
BATTLE
100 15 10
-9984
样例二说明: 冒险者初始状态为10血量上限、20攻击力和5防御力。冒险过程中共计发生3个事件。 冒险者首先遇到了怪物,怪物有30血量,9999攻击力和10的防御力,战斗过程如下:
- 第一回合
冒险者攻击,冒险者攻击力 20 - 怪物防御力 10 = 10点伤害,怪物的血量从 30 变成 20。 怪物攻击,怪物攻击力9999 - 冒险者防御力 = 9994点伤害,冒险者的血量从10 变成 -9984。
冒险者被击败,探险失败,输出冒险者被击败时的血量-9984。