QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 2048 MB Total points: 100

#1943. 边界

Statistics

考虑一个黑白图像,其中每个像素的值为 0 或 1。定义图像的一个区域为一组具有相同值且相互连通的像素。具体来说,对于区域中的任意两个像素,它们之间存在一条仅经过相同值像素的路径(路径仅能向上、下、左、右移动)。

你希望图像中的每个区域周围都有一个完整的边界。你可以选择对某些区域绘制边界;当你这样做时,你将围绕整个区域绘制一个边界,包括任何内部的“孔洞”(完全包含在该区域内的区域)。如果两个区域相邻,那么你可以通过围绕其中一个、另一个或两者同时绘制边界来提供它们之间的边界。为了确保每个区域都有边界,你需要围绕绘制边界的区域的最小数量是多少?

考虑以下示例:

  • 在第一个例子中,最小数量是 3。因为它们位于边缘,除了将三个区域全部围起来之外别无选择。
  • 在第二个例子中,最小数量是 1。围绕 0 区域绘制边界同时也为 1 区域提供了边界。
  • 在第三个例子中,答案是 8。围绕所有位于边缘的区域绘制边界,同时也为中心区域提供了边界。

输入格式

输入的第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 100$),其中 $n$ 是图像的行数,$m$ 是列数。

接下来的 $n$ 行,每行包含一个长度为 $m$ 的字符串,仅由字符 ‘0’ 和 ‘1’ 组成。这就是图像。

输出格式

输出一个整数,表示为了确保每个区域都有边界,你必须围绕绘制边界的区域的最小数量。

样例

输入 1

3 3
000
111
000

输出 1

3

输入 2

3 3
000
010
000

输出 2

1

输入 3

3 3
010
101
010

输出 3

8

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.