p1003 [noip2011 提高组] 铺地毯
时间: 2023-04-28 07:03:42 浏览: 141
noip2011提高组复赛day1
题目描述
有一块 $n\times m$ 的矩形地面,现在要用 $1\times 2$ 的木板铺满地面,且所有木板的边都必须与地面的边平行。现在给你 $n\times m$ 的地面的铺设情况,请你计算出最少还需要多少块 $1\times 2$ 的木板。
输入格式
第一行包含两个整数 $n,m$。
接下来 $n$ 行,每行包含 $m$ 个字符,用来描述地面的铺设情况,其中 . 表示该位置为空地,# 表示该位置已经铺设了木板。
输出格式
输出一个整数,表示最少还需要多少块 $1\times 2$ 的木板。
数据范围
$1\leq n,m\leq 100$
输入样例1:
3 3
.#.
.#.
...
输出样例1:
1
输入样例2:
3 3
.#.
.#.
#..
输出样例2:
算法1
(贪心) $O(nm)$
1.先将所有的空地分为两类:一类是横着的,一类是竖着的。
2.对于横着的空地,每两个空地可以用一块木板铺满,所以需要的木板数为横着的空地数除以2。
3.对于竖着的空地,每两个空地可以用一块木板铺满,所以需要的木板数为竖着的空地数除以2。
4.最后将横着的和竖着的需要的木板数相加即可。
时间复杂度
参考文献
python3 代码
C++ 代码
算法2
(暴力枚举) $O(nm)$
blablabla
时间复杂度
参考文献
C++ 代码
阅读全文