P7087 [NWRRC 2013] Intellectual Property

题目描述

Erast Kopi 是一位著名的数独谜题设计师。他的谜题合集取得了巨大成功,引发了许多模仿和抄袭。在提出诉讼之前,他决定收集更多证据。 数独谜题是一个 $9 \times 9$ 的表格,分为 $3 \times 3$ 的子表格,每个子表格包含 $3 \times 3$ 的单元格。每个单元格可以包含从 $1$ 到 $9$ 的一个数字。任务是用数字填充空单元格,使得每一行、每一列以及每个 $3 \times 3$ 的子表格都恰好包含从 $1$ 到 $9$ 的每个数字一次。 Kopi 有一个数独谜题数据库,他想检查其中是否包含相似的谜题。谜题 $P$ 与谜题 $Q$ 相似,如果可以通过以下操作序列将谜题 $P$ 转换为谜题 $Q$: 选择两个数字 $x$ 和 $y$,并将所有数字 $x$ 替换为 $y$,反之亦然; 交换两组行:$(1 , 2 , 3) , (4 , 5 , 6) , (7 , 8 , 9)$; 在一组行中交换两行; 交换两组列:$(1 , 2 , 3) , (4 , 5 , 6) , (7 , 8 , 9)$; 在一组列中交换两列; 沿左上到右下轴翻转。此操作后,列变为行,反之亦然。 帮助 Kopi 在他的数据库中找到相似的谜题。

输入格式

输入的第一行包含一个整数 $n$,表示数据库中的谜题数量 $(1 \le n \le 20)$。 输入的其余部分包含 $n$ 个谜题的描述:$P_1 , P_2$,……,$P_n$。每个谜题由九行描述,每行包含九个字符。每个字符要么是从 $1$ 到 $9$ 的数字,要么是表示空单元格的点(‘.’)。数据库中连续的谜题之间用空行分隔。 输入文件中没有空格。 这些谜题不保证可解。

输出格式

检查谜题 $P_1$ 是否与谜题 $P_2$,$P_3$,……,$P_n$(按此顺序)相似,然后检查谜题 $P_2$ 是否与谜题 $P_3$,$P_4$,……,$P_n$(按此顺序)相似,依此类推。 如果谜题 $P_i$ 与谜题 $P_j (1 \le i < j \le n)$ 相似,输出 `Yes`,否则输出 `No`。如果答案是肯定的,下一行应包含一个整数 $q_{ij}$,表示将谜题 $P_i$ 转换为谜题 $P_j$ 所需的操作数。操作数不要求是最小的,但不能超过 $1000$。在接下来的 $q_{ij}$ 行中,写出将谜题 $P_i$ 转换为谜题 $P_j$ 的操作,每行一个。 操作以以下方式编码: `D $x$ y` 表示交换数字 $x$ 和 $y$; `R a b` 表示交换行组 $(3a - 2, 3a - 1, 3a)$ 和 $(3b - 2, 3b - 1, 3b)$; `r a b` 表示交换行 $a$ 和 $b$,行必须属于同一组行; `C a b` 表示交换列组 $(3a - 2, 3a - 1, 3a)$ 和 $(3b - 2, 3b - 1, 3b)$; `c a b` 表示交换列 $a$ 和 $b$,列必须属于同一组列; `F` 表示沿左上到右下轴翻转。 列从左到右编号,行从上到下编号,编号从一开始。

说明/提示

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