#P7506. 「Wdsr-2.5」琪露诺的算数游戏
「Wdsr-2.5」琪露诺的算数游戏
题目描述
游戏概况
《琪露诺的算数游戏》(诨名“⑨牌”),是一款轻松快乐的多玩家卡牌回合制游戏。
注意:这里的规则与市面上的⑨牌规则不尽相同。由于⑨牌种类太多不大容易处理,所以这里的规则更类似于 游戏。
游戏中有 名玩家,围成一圈。一共会进行 轮。每个玩家初始时有 张手牌。游戏有一个 张牌的牌堆。在本题中,你可以认为不会出现牌堆抽完的情况(真的)。此外,根据该题给出的规则,你不需要考虑选手手牌的顺序。
为了简述游戏规则,你可以认为每一轮游戏中有一个整型变量(类似于 类型寄存器) 。玩家打出的牌本质上是对 进行操作。
注:请注意下文中“局”、“轮”、“回合”的关系。本题你只会进行一局游戏,每局有 轮,每一轮会有若干回合,每一回合会有一名玩家出牌。
每一轮开始时, 会被初始化为 ,然后从初始玩家开始,按照顺时针顺序( ,逆时针同理),依次出牌。如果这是第一轮,那么初始玩家就是 号玩家。当某个玩家出完某张牌后,如果此时 ,视作该玩家成为该局的失败者;否则她就会立刻从牌堆顶部取出一张牌并进入到下一回合。失败者会丢失手上其余的两张牌,并从牌堆顶部依次摸三张牌放入自己的手牌中。同时,失败者会成为下一轮初始玩家。在一局游戏当中,牌堆里的牌只减不增。被使用的牌不会回到牌堆当中。
下面介绍该魔改版游戏的牌型。
基本牌
基本牌可以分为五类:加法牌、减法牌、乘法牌、除法牌、固定牌。
- 加法牌,一共有 种: 。其中, 的作用效果是,使 加上牌面上的数字。即 。
- 减法牌,一共有 种: 。作用效果与加法牌类似,只不过会使 减去牌面上的数字。
- 乘法牌,一共只有 种: 。它的作用效果是令 乘上对应的数字,即 。
- 除法牌,同样只有 种: 。会令 除以对应的数字,向下取整。即 。
- 固定牌,一共有 种: ,会将 直接设置为牌面上的数字。
解牌
解牌是可以使一名玩家跳过该回合,并附加一些特殊效果的一类牌。
- ,跳过你,转到下一个玩家。
- ,跳过你,出牌顺序反转(顺时针变为逆时针,逆时针变为顺时针。在下一轮游戏开始时会重置为顺时针)。
- ,跳过你,然后给下一名玩家施加 效果,也即要出两张牌(先打一摸一,再打一摸一,需要保持全程总数不超过 才能保证不失败)。
效果的一些说明:如果你被施加了 的效果,但是你第一张出了解牌(三种解牌都可以),那么你就会立即解除 效果,跳过这一回合,并且将效果转移到下一名玩家。 效果不能叠加。
在输入文件中,卡牌名会形如 等等。
策略
这一部分将会讲述本题中所有玩家的运行逻辑。
如果无论怎么出都会失败,那么玩家就会随便打出一张牌并成为失败者(显然,打出哪张牌不会对游戏结局产生实质上的影响)。否则会有两种情形:
- 如果此时没有被施加 效果:
- 每名玩家会优先考虑普通牌,并且选择在不成为失败者的前提下使 变得尽可能大的那种方案(如果有多种方案可以使得 最大,那就会按照乘法牌、加法牌、减法牌、除法牌、固定牌的顺序优先选择。显然,同一类普通牌中的不同种类的牌不会使 产生相同的值)。
- 如果没有普通牌,或者出牌后会成为失败者,那么就考虑使用解牌。玩家会依次考虑手头是否有 牌。如果有,就打出这张牌。
- 如果被施加了 效果:
- 优先考虑使用解牌。依次考虑 。如果有,就打出这张牌。
- 否则,选择在不成为失败者的前提下使 变得尽可能小的那种方案(如果有多种方案可以使得 最小,那就会按照除法牌、减法牌、加法牌、乘法牌、固定牌的顺序优先选择)。此时玩家会被解除 状态,于是她会按照情形 来决策。
输入格式
第一行三个正整数 ,含义如题面所示。
接下来 行,每行四个字符串 ,表示这名玩家的名称以及她的三张手牌。玩家名称仅由大小写英文字母组成,不包含空格,长度不超过 。
接下来一行, 个字符串,按照从上至下的顺序描述牌堆里的牌。
详情可以参考输入样例。
输出格式
当新的一轮开始时,你需要输出: (其中, 表示这是第多少轮)。
每名玩家出牌时,如果她不是失败者,你需要输出: (其中, 是玩家名; 是卡牌名; 是当前 的值)。
否则,当一名玩家成为失败者时,该轮结束。你要输出: (其中, 是玩家名)。
详情可以参考输出样例。
提示
样例 1 说明
牌的使用情况都在输出样例中。这里仅说明每出一张牌后每名玩家当前手牌的情况。具体为什么要使用某张牌,可以参考题目描述。
$$\def{\c}#1{\texttt{#1}} \def\arraystretch{1.5} \begin{matrix} \begin{gathered} \textbf{\textsf{初始}}\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{B9} & \c{A99} & \c{PASS} \cr\hline \text{Cirno} & \c{C2} & \c{D2} & \c{A49} \cr\hline \end{array}\cr[10pt] \textbf{\textsf{第一回合}}\quad (p: 0\to 99)\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{B9} & \c{E49} & \c{PASS} \cr\hline \text{Cirno} & \c{C2} & \c{D2} & \c{A49} \cr\hline \end{array}\cr[10pt] \textbf{\textsf{第二回合}}\quad (p:99\to 49)\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{B9} & \c{E49} & \c{PASS} \cr\hline \text{Cirno} & \c{C2} & \c{DOUBLE} & \c{A49} \cr\hline \end{array}\cr[10pt] \textbf{\textsf{第三回合}}\quad (p:49\to 49)\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{B9} & \c{PASS} & \c{PASS} \cr\hline \text{Cirno} & \c{C2} & \c{DOUBLE} & \c{A49} \cr\hline \end{array}\cr[10pt] \end{gathered} & \begin{gathered} \textbf{\textsf{第四回合}}\quad (p:49\to 98)\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{B9} & \c{PASS} & \c{PASS} \cr\hline \text{Cirno} & \c{A19} & \c{DOUBLE} & \c{A49} \cr\hline \end{array}\cr[10pt] \textbf{\textsf{第五回合}}\quad (p:98\to 89)\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{A49} & \c{PASS} & \c{PASS} \cr\hline \text{Cirno} & \c{A19} & \c{DOUBLE} & \c{A49} \cr\hline \end{array}\cr[10pt] \textbf{\textsf{第六回合}}\quad (p:89\to 89)\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{A49} & \c{PASS} & \c{PASS} \cr\hline \text{Cirno} & \c{A19} & \c{A99} & \c{A49} \cr\hline \end{array}\cr[10pt] \textbf{\textsf{第七回合}}\quad (p:89\to 89)\cr \begin{array}{|c|c|c|c|} \hline \textbf{玩家名} & \textbf{手牌 1} & \textbf{手牌 2} & \textbf{手牌 3} \cr\hline \text{JoesSR} & \c{A49} & \c{A99} & \c{PASS} \cr\hline \text{Cirno} & \c{A19} & \c{A99} & \c{A49} \cr\hline \end{array}\cr[10pt] \end{gathered} \end{matrix} $$注:初始回合以及第 回合都是 出牌;第 回合都是琪露诺出牌。值得注意的是,尽管第 回合琪露诺使用了 ,但因为下一回合被 了,所以第 回合仍然是琪露诺出牌。
此时琪露诺无论如何都会失败,于是琪露诺成为了失败者。
样例 3
见下发附件。
数据规模与约定
- 对于 的数据,仅包含普通牌,并且 。
- 对于另外 的数据,不包含 牌和 牌。
- 对于另外 的数据,不包含 牌。
- 对于 的数据, 满足 。保证任何时候 。