CF1771E Hossam and a Letter

题目描述

Hossam 买了一块长为 $n$、宽为 $m$ 的新土地,他将其划分为一个 $n \times m$ 的网格,每个格子的大小为 $1\times1$。 由于 Hossam 的名字以字母 'H' 开头,他决定通过在土地上的某些格子上建造 $1\times1$ 的墙来绘制大写字母 'H'。每个 $1\times1$ 的格子都有一个质量等级:完美、中等或差。 建造墙体以形成字母 'H' 的过程有以下约束: - 字母必须由一条水平线和两条竖直线组成。 - 两条竖直线不能在同一列或相邻列。 - 两条竖直线必须从同一行开始,并在同一行结束(即长度相同)。 - 水平线应连接两条竖直线,但不能穿过它们。 - 水平线可以位于竖直线之间的任意一行(不一定在中间),但不能在最上面或最下面一行。(如果水平线在最上面一行,字母看起来像 'n',如果在最下面一行,则像 'U'。) - 禁止在质量为差的格子上建造墙体。 - 最多只能使用一个中等质量的格子。 - 可以使用任意数量的完美质量格子。 请你求出绘制一个大写字母 'H' 所能使用的最大墙体数量。 如果无法绘制任何一个字母 'H',请输出 $0$。

输入格式

输入的第一行包含两个整数 $n$、$m$($1 \le n, m \le 400$)。 接下来的 $n$ 行,每行包含 $m$ 个字符,描述了网格的情况。字符 '.' 表示完美格子,字符 'm' 表示中等格子,字符 '\#' 表示差格子。

输出格式

输出一个整数,表示构成一个大写字母 'H' 所能使用的最大墙体数量。 如果无法绘制任何一个字母 'H',输出 $0$。

说明/提示

在第一个测试用例中,无法绘制字母 'H'。 在第二个测试用例中,下图表示了网格以及一些合法的字母 'H'。完美、中等和差格子分别用白色、黄色和黑色表示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1771E/7ab52d112de710667f4c7cf4e814613751fe43eb.png) 由 ChatGPT 4.1 翻译