Skip to content

11404: 【原1404】Formylove的战斗统计

题目

题目描述

author: Drei 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/1404

题目描述

畅畅(Formylove)沉迷DOTA2不能自拔,而且有时经常对莫名躺枪抱有疑问,就像:“这个Z炮是怎么压到我的?”。还好机智的Drei帮助畅畅找到了DOTA2每场比赛的战斗日志(Combat Log)。

战斗日志的格式只有如下7种:

  1. [TIME] A hits B for xxx damage (xxx->xxx). (普通伤害)

  2. [TIME] A hits B with SKILL for xxx damage (xxx->xxx). (技能伤害)

  3. [TIME] A receives TYPES buff from B. (获得正面效果)

  4. [TIME] A receives TYPES debuff from B. (获得负面效果)

  5. [TIME] A loses TYPES buff. (失去正面效果)

  6. [TIME] A loses TYPES debuff. (失去负面效果)

  7. [TIME] A is killed by B. (击杀)

这里A和B代表英雄名,xxx代表正整数值,SKILLTYPES代表技能名和效果名。

畅畅会提出如下几个问题:

  1. 这部分日志中一共出现了多少个英雄?

  2. 最高的单次普通伤害值是多少?(不存在则输出-1)

  3. 这部分日志中共出现多少次击杀?

  4. 哪些英雄曾经给别人或自己加过正面buff?(按出现先后顺序,每行一个英雄名,不存在则输出-1)

输入格式

输入包括若干行战斗日志,以#DOTA2#作为结束。

输出格式

针对畅畅的5个问题分别作出回答。针对每个问题先输出“#X:”,X表示问题编号。

Sample Input

[02:19.23] Io hits Roshan for 384 damage (1321->937).
[02:20.23] Io hits Roshan for 374 damage (957->583).
[02:21.20] Io hits Roshan for 380 damage (602->222).
[02:31.70] Undying hits Wraith King for 112 damage (186->74).
[02:33.07] Undying hits Wraith King for 110 damage.
[02:33.07] Wraith King is killed by Undying!
[05:54.90] Windranger receives Windrun buff from Windranger.
[09:28.98] Slark receives Repel buff from Omniknight.
#DOTA2#

Sample Output

#1:
7
#2:
384
#3:
1
#4:
Windranger
Omniknight

解释

[TIME] 字段不用管,damage后面不用管是否有(xxx->xxx),这并不影响答案。

Roshan也算英雄,该日志只记录英雄之间的行为。

40%的数据只包括前两种格式的日志,60%的数据只包括前4种格式的日志。

Oops! 本题目还没有解答!

助教老师们编题的速度,已经超过了解题的速度!

OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。

如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!