P15239 [NHSPC 2025] Chomp!

题目描述

$\textit{Chomp!}$ 是一个经典的两人游戏。起始时有一片由 $mn$ 块大小为 $1 \times 1$ 的小块巧克力连为一片的巧克力,形状如 $m \times n$ 的二维数组(其中 $m$ 为行,$n$ 为列),而最左下角的那一小块非常苦涩,大家都想避开。游戏的玩法为轮流拿走巧克力小块,方式是先从剩下来的巧克力挑一小块,并把其右上方(含正上方及正右方)所有小块同时拿掉。到最后谁拿到最左下角的那一小块便输了。 例如起始时有 $3 \times 4$ 的一片巧克力: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/5faresxs.png) ::: 若玩家一选择了 $X$ 那一小块,则连带 $Y$ 的那些小块也会被拿掉: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/x59pjxju.png) ::: 接着由玩家二从剩下的巧克力块选择。若玩家二此时选择了 $W$ 那一小块,则连带 $Z$ 的那些小块也会被拿掉: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/rvr2d19y.png) ::: 按照以上规则,我们不难证明,在游戏中所出现的任何情形,如从左至右输出每一列 (column) 的巧克力小块数,其结果必为一单调递减 (monotonic decreasing) 数列,且对应此数列之形状唯一。如上例的最终状态,其可以数列 $(3, 1, 0, 0)$ 表示。 在此题目中,我们针对 $3 \times n$ 大小巧克力的 $\textit{Chomp!}$ 游戏中出现的各种情况进行分析,目的是计算在当前的情况下,先行者是否有获胜的走法。我们假设游戏双方皆绝顶聪明,会采取最好的游玩策略来让自己获胜。若先行者能获胜,我们输出在目前情况下有多少种可以获胜的第一步选择,并把这些选择枚举出来;反之,则输出 $0$。这里,我们将下面数上来第 $i$ 行、左边数过来第 $j$ 列的小块巧克力编号为 $(i, j)$,满足左下角为 $(1, 1)$,右上角为 $(3, n)$。

输入格式

$$ \begin{aligned} &t \\ &n_1 \; p_1 \; q_1 \; r_1 \\ &\vdots \\ &n_t \; p_t \; q_t \; r_t \end{aligned} $$ * $t$ 代表总共有 $t$ 笔询问。 * $n_i$ 代表第 $i$ 笔询问的巧克力总列数。 * $p_i, q_i, r_i$ 代表第 $i$ 笔询问的状态为从左至右先有 $p_i$ 列为 $3$ 小块巧克力,接着有 $q_i$ 列为 $2$ 小块巧克力,再有 $r_i$ 列为 $1$ 小块巧克力。

输出格式

$$ \begin{aligned} &c_1 \\ &x_{1,1} \; y_{1,1} \; \dots \; x_{1,c_{1}} \; y_{1,c_{1}} \\ &\vdots \\ &c_t \\ &x_{t,1} \; y_{t,1} \; \dots \; x_{t,c_{t}} \; y_{t,c_{t}} \end{aligned} $$ * $c_i$ 代表在第 $i$ 笔询问的状态下,先行者可以获胜的第一步选择数。若先行者无法获胜,则 $c_i = 0$。 * $x_{i,j}, y_{i,j}$ 代表第 $i$ 笔询问中,第 $j$ 个可以作为先行者获胜的第一步选择的小块巧克力编号。若 $c_i > 1$,请依 $x$ 值小到大排序编号,若 $x$ 值相同则依 $y$ 值小到大排序编号。

说明/提示

### 数据限制 * $1 \le t \le 1000$。 * $1 \le n_i \le 500$。 * $0 \le p_i, q_i, r_i \le n_i$。 * $1 \le p_i + q_i + r_i \le n_i$。 * 输入的数皆为整数。 ### 评分说明 本题共有三组子任务,条件限制如下所示。 每一组可有一或多笔测试资料,该组所有测试资料皆需答对才会获得该组分数。 | 子任务 | 分数 | 额外输入限制 | | :------: | :----: | ------------ | | 1 | 20 | $t = 1$,$p_i = 0$。 | | 2 | 37 | $1 \le n_i \le 50$。 | | 3 | 43 | 无额外限制。 |