#P14646. [POI 2025/2026 #1] 并非哈诺塔 / Hanoj
[POI 2025/2026 #1] 并非哈诺塔 / Hanoj
题目描述
Bajtyna 最近在一个可疑的网站上买了一个玩具。她没有收到著名的汉诺塔谜题,而是在邮箱里发现了 Hanoj 塔。
Hanoj 塔由 个堆组成,上面分布着 个两两不同的积木,编号为从 到 的整数。在游戏开始时以及游戏的任何时刻,每个堆上的积木编号必须按照从堆顶到堆底递增的顺序排列。
在一步移动中,玩家可以从任意堆取走顶部的积木,并将其放置在任意堆的底部。
Bajtyna 现在想知道,要将所有积木放置在同一个堆上,最少需要多少步移动。帮她解决这个谜题。
输入格式
输入的第一行包含两个整数 和 ( ),分别表示积木的数量和堆的数量。堆用从 到 的整数编号。
接下来的 行包含堆的描述。
第 个堆(对于 )的描述由数字 ( )组成,其中 是第 个堆上的积木数量,而 是这些积木的编号,按从堆顶到堆底的顺序给出。
所有给出的积木具有范围从 到 的两两不同的编号,每个这样的积木都位于某个堆上(即 )。
输出格式
输出的第一行应打印一个整数 ,表示解决谜题所需的最少移动次数。接下来的 行应包含后续移动的描述。
第 步移动(对于 )的描述应由两个整数 ( )组成,表示将堆 的顶部元素移动到堆 的底部。
如果无法解决谜题,则应只打印包含 的一行。
如果有多种可能的解决方案,只需打印其中任意一种。
3 3
1 2
2 1 3
0
3
2 3
1 3
2 3
7 3
4 1 2 5 7
1 4
2 3 6
-1
提示
样例解释
-
样例 中,首先我们将积木 1 从第二个堆的顶部移动到空的第三个堆。接下来,我们将积木 2 从第一个堆移动到第三个堆的底部。最后,我们将积木 3 从第二个堆移动到第三个堆的底部。这样,在游戏的任何时刻,每个堆上的积木编号都是递增排序的,并且在三次移动后,所有积木都位于第三个堆上。
-
样例 中,解决谜题是不可能的。
大样例
可以在附件中获得大样例。
样例 和 是题面中展示的样例。此外:
- :10 个积木和两个堆,其中一个是空的。
- :1000 个积木和三个堆,其中一个是空的,其余两个分别包含编号为偶数和奇数的积木。
- : 个堆和 个积木,每个堆上有一个。
子任务
本题采用捆绑测试。
| 子任务编号 | 限制 | 得分 |
|---|---|---|
| 对于某些 | ||
| 无额外限制 |
如果你的答案只有第一行是正确的,你的解决方案将获得该测试 的分数。你不需要打印后续行即可获得这些分数。