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|