bzoj#P1873. [BeiJing2009 WinterCamp]Dota字幕提示
[BeiJing2009 WinterCamp]Dota字幕提示
题目描述
小 H 最近沉迷于一个魔兽 rpg 对战地图 Defense of the Ancients。他对 dota 的字幕提示非常感兴趣,因此想要编写一个程序来实现类似功能。
Dota 的字幕提示主要是关于杀人,主要有以下 类提示:
- 基本类:
A pawned B’s head.
- 连杀类:
A is on a killing spree/dominating/has a mega kill……!
- 多杀类:
A just got a Double Kill/Triple Kill!
- 局势类:
The Scourge/Sentinel is OWNING!
关于 Dota 的四类字幕提示,出现规律分别如下:
基本类:
-
这类一定在每次击杀后第一时间出现。
-
这类提示有以下3个变化:
- 如果这是全游戏第一个有效击杀,那么在下一行显示
A just drew first blood.
- 如果在一个有效击杀内被杀的玩家在之前有连杀类提示,则显示
A has just ended B’s [B的称号].
其中括号内为 B 的当前称号 - 如果是一名玩家杀死了他自己,则显示
A has killed himself.
。如果一个玩家不是被敌方阵营玩家杀死,则显示A has been killed by B.
- 如果这是全游戏第一个有效击杀,那么在下一行显示
连杀类:
这类提示出现在基本类之后,如果某人在没有被敌对阵营玩家杀死的前提下完成了至少 次击杀,那么从此往后每次击杀都会有连杀类提示,字幕分别如下:
- 3杀 -
A is on a killing spree!
- 4杀 -
A is dominating!
- 5杀 -
A has a mega kill!
- 6杀 -
A is unstoppable!
- 7杀 -
A is wicked sick!
- 8杀 -
A has a monster kill!
- 9杀 -
A is godlike!
- 10杀以上 -
A is beyond godlike. someone kill him!
同时当该玩家在之后被杀死时基本类提示会出现变化,出现提示与该玩家的称号有关,称号分别如下:
- 3杀 -
killing spree
- 4杀 -
dominating
- 5杀 -
mega kill
- 6杀 -
unstoppable
- 7杀 -
wicked sick
- 8杀 -
monster kill
- 9杀 -
godlike
- 10杀以上 -
beyond godlike
多杀类:
这类提示出现在连杀类提示之后,如果某人在杀死一个人之后 秒内完成了第二次击杀,则出现多杀类提示,字幕分别如下:
- 双杀:
A just got a Double Kill!
- 三杀:
A just got a Triple Kill!
多杀统计只需要相邻两次击杀时间相差不超过10秒,即三杀以上的第一次击杀和最后一次击杀之间相差可以超过10秒。
注意当多杀累计超过3个时,仍然显示三杀提示。
另外多杀与连杀为两个系统,即多杀期间即使自身死亡也不中断多杀统计。
局势类:
这类提示出现在多杀类提示之后。
如果一个阵营内的玩家完成了至少5次击杀并且此间本阵营玩家没有被敌对阵营玩家击杀,则会显示:The Scourge/Sentinel is OWNING!
这里与击杀方阵营有关。
需要注意的是,一个击杀为有效击杀当且仅当这个击杀是一名玩家被另一名玩家所杀,若一个击杀并非有效击杀,则只会触发基本类提示。
输入格式
输入文件的第一行为整场游戏的玩家个数 。
接下来 行,每行首先是一个玩家的名字,名字仅包含大写字母、小写字母以及数字,长度不超过 个字符,紧接着一个数字表示该玩家阵营,如果是 0
表示是 Sentinel
方,1
表示是 Scourge
方,阵营数字只可能是 0
或者 1
。
接下来一行为游戏的击杀的总次数 。
接下来 行每行描述一次击杀,形如 aa:bb A is killed by B
,即在 分 秒时 A
被 B
杀死了,击杀叙述顺序保证在时间上是不减的。
输入文件保证合法,即不会出现某玩家杀死同阵营另一玩家,并且被击杀者一定是一名玩家。
整场比赛不超过 分钟
输出格式
输出文件包含若干行,为要求的 dota 字幕提示。
样例
3
YourLittleSiste 0
Ehero 0
Tra 1
21
01:00 Ehero is killed by Tra
02:00 Ehero is killed by Tra
03:00 Ehero is killed by Tra
04:00 Ehero is killed by Tra
04:05 Tra is killed by Roshan
12:00 Tra is killed by Dragon
15:00 Tra is killed by Tra
20:00 Tra is killed by YourLittleSiste
20:01 Tra is killed by YourLittleSiste
20:02 Tra is killed by YourLittleSiste
20:03 Tra is killed by YourLittleSiste
20:04 Tra is killed by YourLittleSiste
25:00 Tra is killed by YourLittleSiste
26:00 Tra is killed by YourLittleSiste
27:00 Tra is killed by YourLittleSiste
28:00 Tra is killed by YourLittleSiste
29:00 Tra is killed by YourLittleSiste
32:00 YourLittleSiste is killed by YourLittleSiste
34:59 YourLittleSiste is killed by Tra
34:59 Tra is killed by YourLittleSiste
35:09 Ehero is killed by Tra
Tra pawned Ehero's head.
Tra just drew first blood.
Tra pawned Ehero's head.
Tra pawned Ehero's head.
Tra is on a killing spree!
Tra pawned Ehero's head.
Tra is dominating!
Tra has been killed by Roshan.
Tra has been killed by Dragon.
Tra has killed himself.
YourLittleSiste has just ended Tra's dominating.
YourLittleSiste pawned Tra's head.
YourLittleSiste just got a Double Kill!
YourLittleSiste pawned Tra's head.
YourLittleSiste is on a killing spree!
YourLittleSiste just got a Triple Kill!
YourLittleSiste pawned Tra's head.
YourLittleSiste is dominating!
YourLittleSiste just got a Triple Kill!
YourLittleSiste pawned Tra's head.
YourLittleSiste has a mega kill!
YourLittleSiste just got a Triple Kill!
The Sentinel is OWNING!
YourLittleSiste pawned Tra's head.
YourLittleSiste is unstoppable!
The Sentinel is OWNING!
YourLittleSiste pawned Tra's head.
YourLittleSiste is wicked sick!
The Sentinel is OWNING!
YourLittleSiste pawned Tra's head.
YourLittleSiste has a monster kill!
The Sentinel is OWNING!
YourLittleSiste pawned Tra's head.
YourLittleSiste is godlike!
The Sentinel is OWNING!
YourLittleSiste pawned Tra's head.
YourLittleSiste is beyond godlike. someone kill him!
The Sentinel is OWNING!
YourLittleSiste has killed himself.
Tra has just ended YourLittleSiste's beyond godlike.
YourLittleSiste pawned Tra's head.
Tra pawned Ehero's head.
Tra just got a Double Kill!
数据规模与约定
对于 的数据,保证 ,。
为方便处理,本题中的字幕提示系统与真实 dota 略有不同,分歧处以题面为准。
对于同一秒发生的击杀,以在输入文件中先出现的击杀为先发生。
严格注意题目叙述中大小写的区别,注意输出文件行末不要有空格。
题目来源
Day2