P7007 [CERC2013] Rubik's Rectangle

题目描述

一种旨在征服游戏市场的新型益智游戏是魔方与十五数码的融合。棋盘是一个 $H \times W$ 的框架,上面印有从 $1$ 到 $H \cdot W$ 的所有数字。 ![](/upload/images2/rubik1.png) 唯一允许的移动类型是翻转其中一行或一列。翻转会逆转该行(或列)元素的顺序。下面第三行被翻转: ![](/upload/images2/rubik2.png) 给定一个以某种任意顺序编号的棋盘。确定一系列翻转操作,使棋盘达到整齐排序的位置,如果可能的话。 ![](/upload/images2/rubik3.png)

输入格式

输入的第一行包含测试用例的数量 $T$。测试用例的描述如下: 每个测试用例的描述以一个空行开始。下一行包含两个用空格分隔的整数 $W$ 和 $H (1 \leq W,H \leq 100)$,分别表示拼图的宽度和高度。接下来的 $H$ 行中的每一行包含 $W$ 个用空格分隔的整数,表示连续瓷砖上印刷的数字。

输出格式

按输入中出现的顺序打印测试用例的答案。对于每个测试用例的输出以单词 POSSIBLE 或 IMPOSSIBLE 开始,具体取决于是否有可能解决拼图。如果存在解决方案,请在同一行打印首先是移动的次数(可能为 $0$),然后是它们的描述,每个描述由一个字母 $R$ 或 $C$ 组成,指定我们是要翻转行还是列,并与要翻转的行或列的索引连接。 只要解决方案不使用超过 $10 \cdot W \cdot H$ 次移动,任何解决方案都将被接受。每个测试用例要么在此限制内可解,要么根本不可解。

说明/提示

时间限制:6 秒,内存限制:128 MB。 题面翻译由 ChatGPT-4o 提供。