跳转至

种西瓜

  • 参考时间限制: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\)