P7506 「Wdsr-2.5」琪露诺的算数游戏

题目描述

#### 游戏概况 《琪露诺的算数游戏》(诨名“⑨牌”),是一款轻松快乐的多玩家卡牌回合制游戏。 **注意:这里的规则与市面上的⑨牌规则不尽相同**。由于⑨牌种类太多不大容易处理,所以这里的规则更类似于 $\text{NEU}$ 游戏。 游戏中有 $n$ 名玩家,围成一圈。一共会进行 $m$ 轮。每个玩家初始时有 $3$ 张手牌。游戏有一个 $k$ 张牌的牌堆。在本题中,你可以认为**不会出现牌堆抽完的情况**(真的)。此外,根据该题给出的规则,你不需要考虑选手手牌的顺序。 为了简述游戏规则,你可以认为每一轮游戏中有一个整型变量(类似于 $\text{int}$ 类型寄存器) $p$ 。玩家打出的牌本质上是对 $p$ 进行操作。 **注**:请注意下文中“局”、“轮”、“回合”的关系。本题你只会进行一局游戏,每局有 $m$ 轮,每一轮会有若干回合,每一回合会有一名玩家出牌。 每一轮开始时,$p$ 会被初始化为 $0$ ,然后从初始玩家开始,按照**顺时针顺序**($1,2,3,\cdots n-1,n,1,2,\cdots$ ,逆时针同理),依次出牌。如果这是第一轮,那么初始玩家就是 $1$ 号玩家。当某个玩家出完某张牌后,如果此时 $p> 99$ ,视作该玩家成为该局的**失败者**;否则她就会**立刻从牌堆顶部取出一张牌**并进入到下一回合。失败者会丢失手上其余的两张牌,并从牌堆顶部依次摸三张牌放入自己的手牌中。同时,失败者会成为**下一轮初始玩家**。在一局游戏当中,牌堆里的牌只减不增。被使用的牌不会回到牌堆当中。 下面介绍该魔改版游戏的牌型。 #### 基本牌 基本牌可以分为五类:加法牌、减法牌、乘法牌、除法牌、固定牌。 - 加法牌,一共有 $7$ 种: $A_{1},A_{2},A_{5},A_{9},A_{19},A_{49},A_{99}$ 。其中, $A_x$ 的作用效果是,使 $p$ 加上牌面上的数字。即 $p\gets p+x$ 。 - 减法牌,一共有 $3$ 种: $B_{1},B_{9},B_{19}$ 。作用效果与加法牌类似,只不过会使 $p$ 减去牌面上的数字。 - 乘法牌,一共只有 $1$ 种: $C_2$ 。它的作用效果是令 $p$ 乘上对应的数字,即 $p\gets p\times x$ 。 - 除法牌,同样只有 $1$ 种: $D_2$ 。会令 $p$ 除以对应的数字,**向下取整**。即 $p\gets \lfloor p\div x\rfloor$ 。 - 固定牌,一共有 $3$ 种: $E_{0},E_{49},E_{99}$ ,会将 $p$ 直接设置为牌面上的数字。 #### 解牌 解牌是可以使一名玩家跳过该回合,并附加一些特殊效果的一类牌。 - $\tt{PASS}$ ,跳过你,转到下一个玩家。 - $\tt{TURN}$ ,跳过你,出牌顺序反转(顺时针变为逆时针,逆时针变为顺时针。在下一轮游戏开始时会重置为顺时针)。 - $\tt{DOUBLE}$ ,跳过你,然后给下一名玩家施加 $\verb!"DOUBLE"!$ 效果,也即要出两张牌(先打一摸一,再打一摸一,需要保持全程总数不超过 $99$ 才能保证不失败)。 $\tt{DOUBLE}$ 效果的一些说明:如果你被施加了 $\tt{DOUBLE}$ 的效果,但是你第一张出了解牌(三种解牌都可以),那么你就会立即解除 $\tt{DOUBLE}$ 效果,跳过这一回合,**并且将效果转移到下一名玩家**。 $\tt{DOUBLE}$ 效果不能叠加。 --- 在输入文件中,卡牌名会形如 $\colorbox{#f0f0f0}\verb!A1 A99 D2 PASS DOUBLE!$ 等等。 #### 策略 这一部分将会讲述本题中所有玩家的运行逻辑。 如果无论怎么出都会失败,那么玩家就会随便打出一张牌并成为失败者(显然,打出哪张牌不会对游戏结局产生实质上的影响)。否则会有两种情形: 1. 如果此时没有被施加 $\tt{DOUBLE}$ 效果: - 每名玩家会优先考虑普通牌,并且选择在不成为失败者的前提下使 $p$ 变得**尽可能大**的那种方案(如果有多种方案可以使得 $p$ 最大,那就会按照**乘法牌、加法牌、减法牌、除法牌、固定牌**的顺序优先选择。显然,同一类普通牌中的不同种类的牌不会使 $p$ 产生相同的值)。 - 如果没有普通牌,或者出牌后会成为失败者,那么就考虑使用解牌。玩家会依次考虑手头是否有 $\tt{PASS,TURN,DOUBLE}$ 牌。如果有,就打出这张牌。 2. 如果被施加了 $\tt{DOUBLE}$ 效果: - 优先考虑使用解牌。依次考虑$\tt{PASS,TURN,DOUBLE}$ 。如果有,就打出这张牌。 - 否则,选择在不成为失败者的前提下使 $p$ 变得**尽可能小**的那种方案(如果有多种方案可以使得 $p$ 最小,那就会按照**除法牌、减法牌、加法牌、乘法牌、固定牌**的顺序优先选择)。此时玩家会被解除 $\tt{DOUBLE}$ 状态,于是她会按照情形 $1$ 来决策。

输入格式

输出格式

说明/提示

#### 样例 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} $$ **注**:初始回合以及第 $2,4,6$ 回合都是 $\text{JoesSR}$ 出牌;第 $1,3,5,7$ 回合都是琪露诺出牌。值得注意的是,尽管第 $5$ 回合琪露诺使用了 $\tt{DOUBLE}$ ,但因为下一回合被 $\tt{PASS}$ 了,所以第 $7$ 回合仍然是琪露诺出牌。 此时琪露诺无论如何都会失败,于是琪露诺成为了失败者。 #### 样例 3 见下发附件。 #### 数据规模与约定 - 对于 $30\%$ 的数据,仅包含普通牌,并且 $n\le 3$ 。 - 对于另外 $15\%$ 的数据,不包含 $\tt{TURN}$ 牌和 $\tt{PASS}$ 牌。 - 对于另外 $15\%$ 的数据,不包含 $\tt{DOUBLE}$ 牌。 - 对于 $100\%$ 的数据, 满足 $1\le n\le 30;1\le m\le 100;1\le k\le 3\times 10^5$ 。保证任何时候 $|p|