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 翻译