Xiao_mo loves 三国杀
题目描述:
Xiao_mo和Lyrsta在玩三国杀,但他们并不屑于进行博弈,于是决定直接根据自己的手牌和牌堆判断胜负。聪明的Xiao_mo只用了998244353-1 s就选择了躺平,并把判断胜负的任务交给了会使用Python的你。
为了方便你得出结论,Xiao_mo对三国杀的规则作出了重新定义:
1. 牌型仅包括基本牌[杀]、[闪]、[桃]和锦囊牌[南蛮入侵]、[万箭齐发]、[过河拆桥]、[顺手牵羊]、[决斗]、[无中生有]、[无懈可击]。各种牌在游戏内的代号及使用方式如下:
[杀](K):让目标出一张[闪],否则损失1点体力。如果没有技能,在自己的回合内至多直接使用1张[杀](不计[决斗]中使用的[杀])。
[闪](E):闪避一次[杀]的攻击。
[桃](P):使目标回复1点体力。[桃]仅限于在自己的回合内,自己体力未达到体力上限时;或自己处于濒死状态(体力为0)时可以对自己使用。
[南蛮入侵](N):让自己以外的所有人出[杀],否则损失1点体力。
[万箭齐发](J):让自己以外的所有人出[闪],否则损失1点体力。
[过河拆桥](C):弃置目标最右侧的手牌。
[顺手牵羊](S):从目标处获得对方最右侧的手牌。
[决斗](D):从目标开始,双方轮流出[杀]。首先不能出[杀]的一方损失1点体力。
[无中生有](Y):从牌堆左侧获得2张牌。
[无懈可击](W):在对方使用的一张锦囊牌(包括[无懈可击])生效之前,使其对自己无效。
- [杀]、[桃]、[过河拆桥]、[顺手牵羊]、[决斗]在使用时必须指定目标。若无目标可指定则不可使用。
2. 一个回合仅包括摸牌阶段、出牌阶段和弃牌阶段。
摸牌阶段:当前执行回合的玩家从牌堆左侧摸2张牌并按序置于手牌右侧。
出牌阶段:当前执行回合的玩家按照从左往右的顺序依次打出所有可以打出的牌。
弃牌阶段:若当前执行回合的玩家体力值小于手牌数,则按照从左往右的顺序依次弃置手牌,使自己的手牌数等于自己当前的体力值。
3. 游戏开始时是Xiao_mo的摸牌阶段。
Xiao_mo的武将是[陆逊]。体力上限3,拥有技能[连营](当你失去最后一张手牌时,立即摸1张牌)和[谦逊](你不能成为[顺手牵羊]的目标)。
Lyrsta的武将是[张飞]。体力上限4,拥有技能[咆哮](在出牌阶段可以出无限张[杀])。
4. 游戏结束的条件为:
(1) 任何时刻若需要摸牌但牌堆剩余牌数少于需要摸的牌数,则将这些牌全摸走并立即结束游戏。游戏结果判定为平局。
(2) 在不与 (1) 冲突的前提下,任何时刻若一方处于濒死阶段且手牌中不含[桃],立即结束游戏并判定对方胜利。
输入格式:
输入共3行,每行一个字符串,分别表示Xiao_mo的初始手牌、Lyrsta的初始手牌和牌堆(均用牌的代号表示牌)。
输出格式:
输出共3行。
第1行一个字符串表示游戏结果。若Xiao_mo获胜,输出”Xiao_mo胜利!”;若Lyrsta获胜,输出”Lyrsta胜利!”;若为平局,输出”平局!”。
第2行为一个正整数和一个字符串,表示游戏结束时Xiao_mo的体力值和手牌。
第3行为一个正整数和一个字符串,表示游戏结束时Lyrsta的体力值和手牌。
特别地,若手牌为空,则输出手牌时输出”没有手牌!”
数据范围:
对于100%数据,牌的总数≤50000。
样例输入:
DDN SCP DKPS
样例输出:
Xiao_mo胜利! 3 P 0 SC
提示:
样例解释:
Xiao_mo在摸牌阶段结束后拥有[决斗]、[决斗]、[南蛮入侵]、[决斗]和[杀]。
Xiao_mo连续使用[决斗]、[决斗]、[南蛮入侵]、[决斗]和[杀],把有一个[桃]的Lyrsta秒了。
由于[连营]发动,结束时Xiao_mo的手牌包括一张[桃]。
由于Lyrsta忙于计算对局结果,他提供的数据存在一些空字符。请用input().strip()代替input()进行输入。
时间限制: 1000ms空间限制: 256MB
来源: Xiao_mo