#P15346. [TOIP 2025] 煎餅攤
[TOIP 2025] 煎餅攤
说明
阿麦在假日市集里摆了一个摊子卖煎饼。 考量每个人的食量不同,他决定贩售 种不同大小的煎饼,依照小到大由 编号到 ,并预计将同一种大小的煎饼堆成一叠方便选购。 每叠煎饼至多只能叠 片,否则会因为过高而倒塌。 阿麦每煎好一片就将该片煎饼放到摊位台面上,但因为太过匆忙,不同大小的煎饼被堆放在同一叠。 当他注意到时,摊位上已有 叠煎饼,每叠都恰有 片,而每种大小的煎饼也恰有 片。
阿麦想利用煎饼铲来移动这些煎饼,调整回他预期的摆设。 他只能通过下面的动作来调整煎饼位置:
- 将煎饼铲插入某叠煎饼中的某两片之间
- 将煎饼铲上方所有的煎饼放置至另一叠的上方 (铲子上方的煎饼顺序不变)
因摊位台面大小有限,除了既有的 叠煎饼外,剩余的空间仅能再容纳一叠煎饼; 此外,调整过程不可有任一叠超过 片,否则该叠煎饼就会倒塌。 请协助阿麦将同样大小的煎饼调整为同一叠,并且让较小的煎饼排在较左边。 举例来说,若 ,,一开始的 叠煎饼如下图 (最右边为台面剩余空间):
:::align{center}
:::
一个可能的调整方式如下,将煎饼铲插入最左边的下面两片之间,并移动至右方的剩余空间:
:::align{center}
:::
将煎饼铲插入中间的下面两片之间,并移动至最左边:
:::align{center}
:::
将最左边最上面的煎饼铲至中间:
:::align{center}
:::
接着再将最右边的两个煎饼分别铲到第 , 叠,便完成了阿麦预期的摆设方式:
:::align{center}
:::
请写一个程序帮助阿麦将各种大小的煎饼移动到想要的位置, 由于移动方法很多可以输出任何一种可行的移动方法, 但移动的次数需要在 次以内。
输入格式
$$\begin{aligned} &m \; n \\ &a_{1,1} \; a_{1,2} \; \cdots \; a_{1,m} \\ &a_{2,1} \; a_{2,2} \; \cdots \; a_{2,m} \\ &\vdots \\ &a_{n,1} \; a_{n,2} \; \cdots \; a_{n,m} \end{aligned}$$- 代表目前共有 叠煎饼。
- 代表目前每叠煎饼恰有 片煎饼,并且每种大小的煎饼都恰有 片。
- 代表由左到右第 叠,由下至上第 个煎饼的大小。
输出格式
$$\begin{aligned} &c \\ &s_1 \; k_1 \; t_1 \\ &s_2 \; k_2 \; t_2 \\ &\vdots \\ &s_c \; k_c \; t_c \end{aligned}$$- 代表移动的总次数。
- , , 代表第 次的移动将从左到右第 的上面 片煎饼移动到从左到右的第 叠。(第 叠为开始时的空位)
- 。
- ,且 。
- 且不得大于当前第 叠的煎饼数量。
3 2
1 2 1
2 1 2
5
1 2 3
2 2 1
1 1 2
3 1 1
3 1 2
提示
数据限制
- 。
- 。
- 。
- 所有输入的数皆为整数。
- 保证 到 每个数字恰好在 里出现 次。
评分说明
本题共有三组子任务,条件限制如下所示。每一组可有一或多笔测试数据,该组分数为所有测试数据的最小得分。
| 子任务 | 分数 | 额外输入限制 |
|---|---|---|
| 1 | 8 | 。 |
| 2 | 37 | 。 |
| 3 | 55 | 无额外限制。 |
本题若输出任意合法解答该测试数据以满分计,但输出若有下列非法情况测试数据则以 分计:
- 输出的移动次数过多。
- 数字超出范围。
- 移动的煎饼数量大于起始叠的煎饼数量。
- 移动完毕后,第 种煎饼没有全部都在第 叠的位置上。
另外,如果移动过程中有任一叠煎饼超过 个,则该笔测试数据以原测试数据组分数 计。
京公网安备 11011102002149号