QOJ.ac

QOJ

Time Limit: 1.0 s Memory Limit: 512 MB Total points: 100 Hackable ✓

#13021. 栅栏

Statistics

考虑一个由符号 ‘.’ 和 ‘’ 组成的 $n \times m$ 网格。一个“房屋”是指由 ‘’ 单元格组成的连通分量。如果两个单元格共享一条公共边,则它们是连通的。围栏是一条不自触、不自交的闭合折线,由对应于单元格边的线段组成。

你需要建造一个满足以下三个属性的围栏:

  1. 围栏不能与网格边界有公共点。
  2. 围栏不能与围栏外部的房屋有公共点。
  3. 围栏的每一段都必须位于任何房屋之外,换句话说,每一段的至少一侧必须是 ‘.’。

计算可以通过上述围栏围住的房屋的最大数量。如果无法建造围栏,则该数量为 0。

输入格式

第一行包含两个整数 $n$ 和 $m$,表示网格的尺寸 ($1 \le n, m \le 10^3$)。 接下来的 $n$ 行,每行包含一个长度为 $m$ 的字符串,由字符 ‘.’ 和 ‘*’ 组成。这些行共同描述了网格。

输出格式

输出一个整数:可以通过满足上述三个属性的围栏围住的房屋的最大数量。

样例

输入格式 1

8 8
........
...**..*
.....**.
..*....*
.*.*.***
.*.*....
..**....
........

输出格式 1

3

输入格式 2

3 4
.*..
****
..*.

输出格式 2

0

说明

图中中心附近的绿色折线围住了三个房屋,这是建造围栏的最优方式之一。顶部附近的红色折线是一个不合格的围栏,因为它接触到了围栏外部的一个房屋。

这两张图片展示了构造围栏的无效方式。左图展示了围栏接触外部边界的情况。右图展示了围栏穿过房屋的情况,这是不可接受的。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.