时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
浮云阴,骤雨倾,顽皮恶魔镰刀显。
你的庄园是一块

的草坪。
现在有一些格子是普通植物

,有一些格子是萝卜保护伞

,有一些格子是僵尸

。(已经在格子上的僵尸不会吃掉植物或移动)
tip:萝卜保护伞可以保护周围

的植物,即一个位于位置
)
的萝卜保护伞可以保护位于
%2C(x%2Cy%5Cpm1)%2C(x%5Cpm1%2Cy%5Cpm1))
以及自身九个格子上的植物。
现在你想知道,对于这样一块给定的草坪,假设有无穷多个飞贼,能够偷走最多数量的植物是多少。
输入描述:
全文第一行输入一个正整数
,表示数据组数。
每组数据第一行输入两个正整数
,表示草坪的长和宽。
接下来输入一个
的字符矩阵表示草坪的大小,字符矩阵中仅包含
、
、
三种字符。
数据保证
。
输出描述:
每行输出一个整数表示最多被偷走的植物数量。
示例1
输入
复制
1
5 5
ZPZPZ
P*PZP
ZPZPZ
PZPZP
ZP*PZ
说明
分别位于
)
和
)
上的保护伞可以保护周围的植物,最后能被偷走的植物如下图所示:(

表示即将被偷走,

表示保护伞,

表示被保护)
肉眼可见最后有分别位于
%2C(2%2C5)%2C(3%2C4)%2C(4%2C1)%2C(4%2C5))
的五株被偷走。