B3818 [语言月赛 202308] 电脑中了满屏粉兔病毒

题目描述

小 F 的电脑屏幕可以被划分为 $r$ 行 $c$ 列的网格,第 $i$ 行第 $j$ 列的网格,可以用 $(i,j)$ 来表示。 突然,有一天,小 F 的电脑中了「满屏粉兔」病毒,在电脑屏幕上,出现了 $N$ 只雄粉兔和 $M$ 只雌粉兔。 假设一只粉兔位于 $(i,j)$,若其沿上、下、左、右四个方向中的一个方向行动,可以在不经过「异性粉兔」的情况下离开屏幕范围,那么,这个方向对于该粉兔就是一条「逃跑通道」。 狡兔三窟。我们定义一只粉兔是「合格的粉兔」,当且仅当其至少有三条「逃跑通道」。 ![](https://cdn.luogu.com.cn/upload/image_hosting/qlwtx8rv.png) 例如,如图所示,绿色方格代表雄粉兔,粉色方格代表雌粉兔。位于 $(2,2)$ 的雌粉兔,向上、下、左,都可以不经过雄粉兔的离开屏幕,共有三条「逃跑通道」因此,位于 $(2,2)$ 的粉兔是「合格的粉兔」。而位于 $(4,4)$ 的粉兔,仅有左、右两条「逃跑通道」,因此 $(4,4)$ 的粉兔不是「合格的粉兔」。 现在,给出屏幕上粉兔的分布情况,请问,一共有多少只「合格的粉兔」?

输入格式

输入共 $r+1$ 行。 输入的第一行为四个整数 $r,c,N,M$。 接下来 $r$ 行,每行 $c$ 个字符,第 $i$ 行第 $j$ 个字符 $k_{i,j}$ 描述了网格 $(i,j)$ 的情况: - 若 $k_{i,j}$ 为 `.`,则代表 $(i,j)$ 没有粉兔。 - 若 $k_{i,j}$ 为 `F`,则代表 $(i,j)$ 为雌粉兔。 - 若 $k_{i,j}$ 为 `M`,则代表 $(i,j)$ 为雄粉兔。

输出格式

输出一行一个整数,代表「合格的粉兔」的只数。

说明/提示

- 对于 $30\%$ 的测试数据,$1 \le r,c \le 30$; - 对于 $100\%$ 的测试数据,$1 \le r,c \le 500$,$0 \le N,M \le r \cdot c$,$k_{i,j}$ 为 `.`、`F`、`M` 中的一个。