CF1404E Bricks

题目描述

一个砖块被定义为宽度为 $1$ 或高度为 $1$(或两者都是 $1$)的整数边长矩形。 现在有一个 $n\times m$ 的网格,每个格子被染成黑色或白色。一种铺砖方式是指在网格上放置砖块,使得每个黑色格子恰好被一个砖块覆盖,每个白色格子不被任何砖块覆盖。换句话说,砖块只能放在黑色格子上,且要覆盖所有黑色格子,任意两个砖块不能重叠。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1404E/050636f71672896c95a76cd68bdb315cb0256b57.png) 上图是第一个测试用例的一种铺砖方式,共使用了 $5$ 块砖。实际上可以更优,只用 $4$ 块砖即可。请问,最少需要多少块砖才能完成有效铺砖?

输入格式

第一行包含两个整数 $n$、$m$($1\le n, m\le 200$),分别表示行数和列数。 接下来的 $n$ 行描述网格。第 $i$ 行包含一个长度为 $m$ 的字符串,第 $j$ 个字符表示第 $i$ 行第 $j$ 列格子的颜色。黑色格子用 "\#" 表示,白色格子用 "." 表示。 保证至少有一个黑色格子。

输出格式

输出一个整数,表示完成有效铺砖所需的最少砖块数。

说明/提示

第一个测试用例可以用 $4$ 块竖直放置的砖块完成铺砖。 第三个测试用例可以用 $18$ 块砖块铺成如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1404E/e4a048c75957e1b968fc17253d618d87f8f324f8.png) 由 ChatGPT 4.1 翻译