P15137 [SWERC 2025] Chamber of Secrets 2

题目描述

你正在玩游戏哈利·波特与密室 $2$。你想解锁下一关,即密室。入口门上有 $n$ 个面板,每个面板显示一个由 $m$ 个符号组成的序列。乘积 $nm$ 是偶数。系统通过以下四步过程从一个**秘密排列**生成这些序列: - 首先,从一个秘密排列 $[p_1, p_2, \dots, p_{nm/2}]$ 开始; - 然后,通过将秘密排列与自身连接来重复它,形成数组 $[b_1, b_2, \dots, b_{nm}]$; - 接着,将这个数组分割成 $n$ 个连续的块,即长度为 $m$ 的不相交子数组; - 最后,将这些块以任意顺序打乱并分配到各个面板上。 你被给出了系统产生的最终 $n$ 个面板序列。第 $i$ 个面板显示 $[a_{i,1}, a_{i,2}, \dots, a_{i,m}]$。你的任务是恢复一个可能的原始秘密排列 $[p_1, p_2, \dots, p_{nm/2}]$。对于给定的输入,至少存在一个解。如果有多个秘密排列有效,输出其中任意一个。 两个数组 $[x_1, x_2, \dots, x_{k_1}]$ 和 $[y_1, y_2, \dots, y_{k_2}]$ 的连接是长度为 $k_1 + k_2$ 的数组 $[x_1, x_2, \dots, x_{k_1}, y_1, y_2, \dots, y_{k_2}]$。 长度为 $l$ 的一个排列是一个由 $1$ 到 $l$ 的 $l$ 个不同整数以任意顺序组成的数组。例如,$[2,3,1,5,4]$ 是一个排列,但 $[1,2,2]$ 不是排列($2$ 在数组中出现两次),并且 $[1,3,4]$ 也不是排列($l = 3$ 但数组中有 $4$)。

输入格式

每个测试点包含多个测试用例。第一行包含测试用例的数量 $t$($1 \le t \le 100$)。接下来是对于每个测试用例的描述。 每个测试用例的第一行包含两个整数 $n, m$($1 \le n \le 70$, $1 \le m \le 70$)—— 面板的数量和每个显示序列的长度。 接下来的 $n$ 行中的第 $i$ 行包含 $m$ 个整数 $a_{i,1}, a_{i,2}, \dots, a_{i,m}$($1 \le a_{i,j} \le nm/2$),表示第 $i$ 个面板上显示的序列。 注意,所有测试用例中的 $n$ 和 $m$ 之和没有约束。

输出格式

对于每个测试用例,输出一行,包含一个秘密排列 $[p_1, p_2, \dots, p_{nm/2}]$,使得上述过程可以产生 $n$ 个面板序列 $[a_{i,1}, a_{i,2}, \dots, a_{i,m}]$。对于给定的输入,保证至少存在一个解。

说明/提示

#### 样例解释 在第一个测试用例中,一个有效的秘密排列是 $[p_1, p_2, \dots, p_{nm/2}] = [5, 6, 3, 4, 1, 2]$: - 数组 $[b_1, b_2, \dots, b_{nm}]$ 是 $[p_1, p_2, \dots, p_{nm/2}] = [5, 6, 3, 4, 1, 2]$ 的两个副本的连接; - $[b_1, b_2, \dots, b_{nm}]$ 分割成块 $[5, 6]$, $[3, 4]$, $[1, 2]$, $[5, 6]$, $[3, 4]$, $[1, 2]$; - 打乱后,最终的面板序列 $[a_{i,1}, a_{i,2}, \dots, a_{i,m}]$ 可以与这些块一致。 翻译由 DeepSeek 完成