loj#P4101. 「POI2021 R1」Druk

「POI2021 R1」Druk

题目描述

题目译自 XXIX Olimpiada Informatyczna – I etap Druk

印刷匠 Bajtazar 收到了一个印刷任务,要求他印刷一块写有文字的牌子。牌子是一个 n×mn \times m 的网格,字母均匀分布在上面。Bajtazar 要用一个印刷模板来完成印刷,这个模板是一个宽度等于一个字母行的长条。印刷的过程是通过若干次把模板放在牌子上,然后在模板上喷涂颜料。注意印刷的时候模板不能超出牌子的边界。

模板要分别准备横向和纵向的两种版本,而且两种版本必须包含相同的文字。Bajtazar 必须用模板精确地印刷牌子上的每一个位置。注意,不能把任何一种版本的模板旋转,否则字母会倒过来印刷。

请你帮助 Bajtazar 告诉他所有可以用来印刷整个牌子的模板的长度。

输入格式

输入的第一行包含两个正整数 n,mn, m,分别表示牌子上的字母行数和每行的字母数。接下来的 nn 行,每行包含一个长度为 mm 的由小写字母字母组成的字符串,表示牌子上从上到下的每一行的内容。

输出格式

输出的第一行应该包含一个整数,表示 Bajtazar 可以用来印刷牌子的模板的长度的数量。第二行应该包含所有这些长度,按照严格递增的顺序,用单个空格隔开。如果第一行输出的是 00,那么第二行应该留空。

5 8
aabaaaaa
babaabbb
aabaaaaa
aabaaaaa
abaaabaa
1
4

样例 2

见附加文件下 [dru1.in](file:dru1.in) 和 [dru1.out](file:dru1.out)。

该样例满足 n=1,m=1000n=1, m=1000,全部都是字母 a\texttt{a}

样例 3

见附加文件下 [dru2.in](file:dru2.in) 和 [dru2.out](file:dru2.out)。

该样例满足 n=3,m=1000n=3, m=1000,每行都是 ababab\texttt{ababab}\ldots 形式的文本。

样例 4

见附加文件下 [dru3.in](file:dru3.in) 和 [dru3.out](file:dru3.out)。

该样例满足 n=4,m=9n=4, m=9,文本如下图所示:

样例 5

见附加文件下 [dru4.in](file:dru4.in) 和 [dru4.out](file:dru4.out)。

该样例满足 n=m=1000n=m=1000,全部都是字母 a\texttt{a} 和中间一个字母 c\texttt{c},不存在这样的模板。

样例 6

见附加文件下 [dru5.in](file:dru5.in) 和 [dru5.out](file:dru5.out)。

该样例满足 n=m=1000n=m=1000,牌子由 QQ截图20240130192244.jpgQQ截图20240130192249.jpg 像国际象棋棋盘一样交替组成 。存在一个模板 abba\texttt{abba}(注意,ab\texttt{ab} 不是模板)。

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
11 n=1,m1000n=1, m \leq 1000 1010
22 n3,m1000n \leq 3, m \leq 1000 2525
33 n,m20n, m \leq 20 2020
44 n,m1000n, m \leq 1000 4545