P15348 [TOIP 2025] 同色楼梯和双色楼梯

题目描述

在一个 $m\times n$ 的方格图中,每一格都有恰一种颜色,我们用大写英文字母代表每种颜色。 所谓的「楼梯」是指:连续的某些直行的区段,这些区段的底部位置(下方所在的列)必须是一样的,而高度则是自左而右逐步加一。注意,一个楼梯图形的高度与宽度必然是相等的。 所谓的「同色楼梯」是指:一个楼梯其中所涵盖方格的颜色皆相同。 所谓的「双色楼梯」是指:一个楼梯其中所涵盖方格的颜色有恰两种。 按照以下的范例图形中,蓝色、黄色与绿色分别是宽度(高度)为 $2$、$3$ 与 $4$ 的「同色楼梯」。请注意,楼梯与楼梯可能重叠,例如蓝色 C 楼梯旁还有一个C楼梯。此外,大楼梯中必然有小楼梯,例如下图中宽度 $3$ 的 B 楼梯中有 $3$ 个宽度 $2$ 的楼梯。宽度 $4$ 的 A 楼梯中则含有 $3$ 个宽度 $3$ 的楼梯以及 $6$ 个宽度 $2$ 的楼梯。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/jps21cp8.png) ::: 以下的范例图形中,有标注出所有「双色楼梯」。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/xyq09uf7.png) ::: 你的任务是算出所有宽度(高度)的同色楼梯或双色楼梯分别有几个。

输入格式

$$ \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} $$ * $m$、$n$ 分别代表区域高度、区域宽度。 * $a_{i,j}$ 代表该区域的颜色。 * 若 $q=1$ 代表询问同色楼梯数量。若 $q=2$ 代表询问双色楼梯数量。

输出格式

$$ \begin{aligned} &k \\ &s_1 \; s_2 \; s_3 \; \cdots \; s_k \end{aligned} $$ * $k$ 为一非负整数,代表宽度(高度)最大的同色楼梯(双色楼梯)的宽度(高度)。 * $s_i$ 皆为非负整数,代表宽度(高度)为 $i$ 的同色楼梯(双色楼梯)数量。 * 若 $k = 0$,第二行输出一空行。

说明/提示

### 数据限制 * $1 \le m \le 4000$。 * $1 \le n \le 4000$。 * $a_{i,j}$ 为大写英文字母。 * $m$ 和 $n$ 皆为整数。 * $q \in \{1,2\}$。 ### 评分说明 本题共有五组子任务,条件限制如下所示。每一组可有一或多笔测试数据,该组所有测试数据皆需答对才会获得该组分数。 | 子任务 | 分数 | 额外输入限制 | | :------: | :----: | ------------ | | 1 | 5 | $q=1$,所有 $a_{i,j}$ 相同。 | | 2 | 9 | $q=1$,$m \le 200$, $n \le 200$。 | | 3 | 22 | $q=1$,$m \le 200$。 | | 4 | 33 | $q=1$。 | | 5 | 31 | $q=2$。 |