#P15348. [TOIP 2025] 同色樓梯和雙色樓梯

[TOIP 2025] 同色樓梯和雙色樓梯

说明

在一个 m×nm\times n 的方格图中,每一格都有恰一种颜色,我们用大写英文字母代表每种颜色。

所谓的「楼梯」是指:连续的某些直行的区段,这些区段的底部位置(下方所在的列)必须是一样的,而高度则是自左而右逐步加一。注意,一个楼梯图形的高度与宽度必然是相等的。

所谓的「同色楼梯」是指:一个楼梯其中所涵盖方格的颜色皆相同。

所谓的「双色楼梯」是指:一个楼梯其中所涵盖方格的颜色有恰两种。

按照以下的范例图形中,蓝色、黄色与绿色分别是宽度(高度)为 223344 的「同色楼梯」。请注意,楼梯与楼梯可能重叠,例如蓝色 C 楼梯旁还有一个C楼梯。此外,大楼梯中必然有小楼梯,例如下图中宽度 33 的 B 楼梯中有 33 个宽度 22 的楼梯。宽度 44 的 A 楼梯中则含有 33 个宽度 33 的楼梯以及 66 个宽度 22 的楼梯。

:::align{center} :::

以下的范例图形中,有标注出所有「双色楼梯」。

:::align{center} :::

你的任务是算出所有宽度(高度)的同色楼梯或双色楼梯分别有几个。

输入格式

$$\begin{aligned} &m \; n \\ &a_{1,1} a_{1,2} a_{1,3} \cdots a_{1,n} \\ &a_{2,1} a_{2,2} a_{2,3} \cdots a_{2,n} \\ &a_{3,1} a_{3,2} a_{3,3} \cdots a_{3,n} \\ &\vdots \\ &a_{m,1} a_{m,2} a_{m,3} \cdots a_{m,n} \\ &q \end{aligned}$$
  • mmnn 分别代表区域高度、区域宽度。
  • ai,ja_{i,j} 代表该区域的颜色。
  • q=1q=1 代表询问同色楼梯数量。若 q=2q=2 代表询问双色楼梯数量。

输出格式

$$\begin{aligned} &k \\ &s_1 \; s_2 \; s_3 \; \cdots \; s_k \end{aligned}$$
  • kk 为一非负整数,代表宽度(高度)最大的同色楼梯(双色楼梯)的宽度(高度)。
  • sis_i 皆为非负整数,代表宽度(高度)为 ii 的同色楼梯(双色楼梯)数量。
  • k=0k = 0,第二行输出一空行。
6 8
BCCDDAAA
CCCBBBAB
DDDAAAAB
EBBEAAAA
EBBAAAAA
BBBBABCD
1
4
48 12 4 1
3 3
BCC
CCC
DDD
1
2
9 2
3 3
BCC
CCC
DDD
2
3
0 2 1

提示

数据限制

  • 1m40001 \le m \le 4000
  • 1n40001 \le n \le 4000
  • ai,ja_{i,j} 为大写英文字母。
  • mmnn 皆为整数。
  • q{1,2}q \in \{1,2\}

评分说明

本题共有五组子任务,条件限制如下所示。每一组可有一或多笔测试数据,该组所有测试数据皆需答对才会获得该组分数。

子任务 分数 额外输入限制
1 5 q=1q=1,所有 ai,ja_{i,j} 相同。
2 9 q=1q=1m200m \le 200, n200n \le 200
3 22 q=1q=1m200m \le 200
4 33 q=1q=1
5 31 q=2q=2