QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 1024 MB 總分: 100

#5582. 巧克力豆制造

统计

你正在制作一种巧克力曲奇,所用的机器拥有一个由单位正方形组成的矩形烤盘。你已经确定了曲奇的形状,它占据了该区域内的一些正方形。曲奇的每一个正方形区域都必须被“巧克力化”。

为了制作曲奇,你需要重复执行以下两个步骤:

  1. 在一些单位正方形中放入曲奇面团。
  2. 将曲奇面团暴露在浅层巧克力溶液中。任何没有被四个相邻正方形(上、下、左、右)完全包围的曲奇面团正方形都会被巧克力化。注意,位于烤盘边界上的任何面团正方形总是会被巧克力化。

以下示例展示了如何制作左侧所示形状 (s) 的曲奇:

(s) (a1) (a2) (b1) (b2) -X-X- -D-D- -C-C- -C-C- -C-C- XXXXX -DDD- -CCC- DCCCD CCCCC XXXXX -DDD- -CCC- DCCCD CCCCC -XXX- --D-- --C-- -DCD- -CCC- --X-- ----- ----- --D-- --C--

首先,你在 8 个正方形中放入面团 (a1)。第一次溶液暴露后,所有正方形都被巧克力化 (a2)。接着,你在另外 8 个正方形中放入面团 (b1)。第二次暴露使所有剩余正方形被巧克力化,完成了曲奇的制作 (b2)。

由于巧克力溶液很昂贵,你希望尽可能减少暴露次数。给定曲奇的形状,确定制作该曲奇所需的最少巧克力溶液暴露次数。

输入格式

输入的第一行包含两个整数 $n$ 和 $m$ ($1 \le n, m \le 1\,000$),表示烤盘有 $n$ 行 $m$ 列单位正方形。

接下来的 $n$ 行,每行包含一个长度恰好为 $m$ 的字符串,其中每个字符要么是 “X”,表示该正方形被曲奇占据;要么是 “-”,表示一个空正方形。

曲奇的形状至少占据一个正方形。注意,该形状可能由多个不相连的部分组成。

输出格式

输出制作曲奇所需的最少巧克力溶液暴露次数。

样例

输入 1

5 5
-X-X-
XXXXX
XXXXX
-XXX-
--X--

输出 1

2

输入 2

4 5
--XXX
--X-X
X-XXX
XX---

输出 2

1

输入 3

5 5
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX

输出 3

3

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.