CF426B Sereja and Mirroring
题目描述
假设给定一个大小为 $x×y$ 的矩阵 $b$,定义对矩阵 $b$ 进行“镜像操作”如下:矩阵 $b$ 的镜像是一个 $2x×y$ 的矩阵 $c$,其满足以下性质:
- 矩阵 $c$ 的上半部分(第 $1$ 行到第 $x$ 行)与 $b$ 完全相同;
- 矩阵 $c$ 的下半部分(第 $x+1$ 行到第 $2x$ 行)关于中间分界线(即第 $x$、$x+1$ 行之间的线)与上半部分对称。
Sereja 有一个 $n×m$ 的矩阵 $a$。他希望找出一个矩阵 $b$,使得对 $b$ 进行若干次(可以为零次)镜像操作后能够变换得到矩阵 $a$。这种矩阵 $b$ 的行数可能有多种,请求出这样的矩阵 $b$ 行数的最小值。
输入格式
第一行包含两个整数 $n$ 和 $m$,$1 \le n, m \le 100$。
接下来 $n$ 行,每行包含 $m$ 个整数,表示矩阵 $a$ 的元素。第 $i$ 行为 $a_{i1}, a_{i2}, ..., a_{im}$,其中 $0 \le a_{ij} \le 1$。
输出格式
输出一个整数,表示所求的矩阵 $b$ 最少应有多少行。
说明/提示
在第一个样例中,答案是一个 $2×3$ 的矩阵 $b$ :
001
110
如果对这个矩阵执行一次镜像操作,将得到输入中的矩阵 $a$:
001
110
110
001
由 ChatGPT 5 翻译