QOJ.ac

QOJ

Limite de temps : 1.0 s Limite de mémoire : 512 MB Points totaux : 50

#17617. 巧克力

Statistiques

Luka 非常喜欢巧克力。他收到了一块由 $n$ 行 $m$ 列组成的巨大巧克力作为生日礼物,并迫不及待地想要品尝它。这块巧克力由黑色和白色的巧克力方格组成。然而,Luka 并不太喜欢白巧克力,他只想吃黑色的方格。

在开始吃之前,Luka 会对巧克力进行切割。他会在巧克力的行与行、列与列之间进行若干次水平和/或垂直的切割。一次垂直切割会从巧克力的顶边一直延伸到底边,而一次水平切割会从左边一直延伸到右边。切割完成后,Luka 将得到若干个矩形的巧克力块。

由于 Luka 只吃巧克力的黑色部分,他希望将黑色方格与白色方格完全分离。这意味着切割出的每一个巧克力块都必须完全由黑巧克力组成,或者完全由白巧克力组成。

Luka 希望能尽快开始享用,而不是把时间浪费在切割上,因此他请求你帮助他确定将黑色方格与白色方格分离所需的最少切割次数。

图 1:这是第一个样例中巧克力的切割方式,以便用最少的切割次数将黑色部分与白色部分分离

输入格式

第一行包含两个自然数 $n$ 和 $m$ ($1 \le n, m \le 200$),表示巧克力的行数和列数。

接下来的 $n$ 行,每行包含 $m$ 个字符,每个字符为 01。字符 0 表示白色方格,1 表示黑色方格。

输出格式

输出仅一行,包含一个整数,表示将黑色方格与白色方格分离所需的最少切割次数。

子任务

子任务 分值 限制
1 5 巧克力呈棋盘状,即第 $i$ 行第 $j$ 列的格子在 $i + j$ 为偶数时为白色,为奇数时为黑色。
2 11 $n = 1$
3 11 恰好有一个格子是黑色。
4 23 无附加限制。

样例

输入样例 1

4 7
0000000
0111000
0111100
0000000

输出样例 1

6

样例 1 说明

如上图所示。

输入样例 2

4 5
00000
01100
01100
00000

输出样例 2

4

样例 2 说明

Luka 应该在第 1 行和第 2 行之间、第 3 行和第 4 行之间、第 1 列和第 2 列之间、以及第 3 列和第 4 列之间各切一刀。

输入样例 3

4 4
0101
1010
0101
1010

输出样例 3

6

样例 3 说明

Luka 应该在每两个相邻的行和列之间都切一刀——总共 6 刀。

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.