种西瓜¶
- 参考时间限制:0.5 秒(参考环境:评测环境与性能;仅供预估)
- 实际时间限制:标准程序在目标评测环境中处理最慢正式测试文件的基准时间的 2 倍,按 0.5 秒的倍数向上取整;若平台仅支持更粗的粒度,再向上取整到平台可设置值。
- 内存限制:128 MB
背景故事¶
村长习惯把西瓜种成整齐的长列,新来的农夫却设计了一块形状不规则的瓜田。瓜藤会争用旁边的空地,而生长顺序和方向都无法控制。请帮他们算出这块瓜田最终最多或最少能结出多少个西瓜。
形式化问题描述¶
瓜田是 \(n\) 行 \(m\) 列的网格。每格初始为瓜藤 l 、空地 o 或障碍物 x ;网格外视为障碍物。
每株瓜藤至多结一个瓜。一次生长可以选择任意一株尚未结瓜、且上下左右至少有一格空地的瓜藤,在其中一格空地生成一个瓜。这个格子此后被占用,不能再长瓜。瓜藤所在格子始终是瓜藤,不能用来长瓜。
不断生长,直到没有瓜藤还能结瓜。给定类型 \(tp\) :\(tp=0\) 时求所有可能终止状态中的最大结瓜数;\(tp=1\) 时求最小结瓜数。
输入格式¶
第一行三个整数 \(n,m,tp\) .接下来 \(n\) 行,每行一个长度为 \(m\) 的字符串,表示瓜田。
输出格式¶
输出一个整数,表示要求的最大值或最小值。
样例 1¶
输入¶
2 5 0
xlolx
xolox
输出¶
3
样例 2¶
输入¶
2 5 1
xlolx
xolox
输出¶
2
样例 3¶
输入¶
1 3 1
lxl
输出¶
0
样例解释¶
前两个样例使用同一块瓜田。左图三株瓜藤分别结瓜,得到三个瓜;右图中上方两株瓜藤共用的空地已被占用,剩余未结瓜的瓜藤无法继续生长,最终只有两个瓜。第三组中没有空地,答案为零。
图中 l 表示瓜藤,o 表示空地,x 表示障碍,带圆圈的 M 表示瓜。箭头给出结瓜关系。
数据范围与保证¶
所有数据满足 \(n,m\ge1\) ,\(tp\in\{0,1\}\) .当 \(tp=0\) 时,\(nm\le1000\) ;当 \(tp=1\) 时,\(nm\le100\) 且瓜藤数不超过 \(18\) .允许没有瓜藤或没有空地。
| 分值比例 | 额外条件 |
|---|---|
| 20% | \(tp=0\) ,\(n=1\) |
| 30% | \(tp=0\) |
| 20% | \(tp=1\) ,\(n=1\) |
| 30% | \(tp=1\) |