AT_abc274_g [ABC274G] Security Camera 3

题目描述

有一个高为 $H$、宽为 $W$ 的网格。第 $i$ 行第 $j$ 列的格子记作格子 $(i,j)$。 当 $S_{i,j}=$ `#` 时,格子上有障碍物;当 $S_{i,j}=$ `.` 时,格子上没有任何东西。 高桥君打算在网格中安装若干台监视摄像头。 监视摄像头只能放在没有障碍物的格子上,并且可以朝上下左右四个方向中的任意一个方向放置。 同一个格子上可以放置多台监视摄像头。 每台摄像头可以监视其所在的格子,以及其朝向方向上、在没有被障碍物阻挡的直线上所有格子。 要想监视所有没有障碍物的格子,最少需要安装多少台监视摄像头?

输入格式

输入按以下格式从标准输入读入。 > $H$ $W$ > $S_{1,1}\ldots S_{1,W}$ > $\vdots$ > $S_{H,1}\ldots S_{H,W}$

输出格式

请输出答案。

说明/提示

## 限制条件 - $1 \leq H, W \leq 300$ - $S_{i,j}$ 仅为 `.` 或 `#` ## 样例解释 1 例如,在格子 $(1,1)$ 放置一台朝右、一台朝下的摄像头,在格子 $(3,3)$ 放置一台朝上、一台朝左的摄像头,共计 $4$ 台摄像头,就可以监视所有没有障碍物的格子。 ## 样例解释 2 例如,在格子 $(1,1)$ 放置一台朝右、一台朝下的摄像头,在格子 $(3,3)$ 放置一台朝左的摄像头,在格子 $(2,5)$ 放置一台朝左和一台朝下的摄像头,共计 $5$ 台摄像头,就可以监视所有没有障碍物的格子。需要注意的是,放在 $(2,5)$ 的朝左摄像头会被 $(2,2)$ 的障碍物阻挡,无法监视到 $(2,1)$。 由 ChatGPT 4.1 翻译