QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 2048 MB Points totaux : 100

#9056. 矩阵欺诈

Statistiques

在本题中,二进制矩阵是指所有元素均为 0 或 1 的矩阵。如果一个二进制矩阵的行和列满足以下性质,则称其为带状二进制矩阵:

  1. 每一行至少有一个 1。
  2. 每一列至少有一个 1。
  3. 每一行中的所有 1 都是连续的。
  4. 对于第 $i$ 行,如果 $s_i$ 是该行中 1 出现的最左侧列索引,$t_i$ 是该行中 1 出现的最右侧列索引,则对于 $i > 1$,必须满足 $s_i \ge s_{i-1}$ 且 $t_i \ge t_{i-1}$。

检测带状二进制矩阵是生物学、古生物学和语言学等多个领域中用于挖掘数据集聚类的重要方法。不幸的是,一个名为“纯粹欺诈者不道德卡特尔”(ICPC)的组织决定做一件不可思议的事情:篡改数据!ICPC 希望展示他们突破性的科学成果,但科学界不会认真对待他们的结果,因为他们的矩阵可能不是带状的。为了获得可发表的结果,他们想要翻转一些单元格,使得他们的数据成为带状二进制矩阵。

ICPC 给你提供了他们的原始数据,表示为一个二进制矩阵。他们想要翻转一些单元格(即把 0 变成 1,或者把 1 变成 0),使得结果矩阵成为上述定义的带状二进制矩阵。将给定矩阵转换为带状二进制矩阵所需的最少翻转次数是多少?

输入格式

输入的第一行包含两个整数 $r$ 和 $c$ ($1 \le r \times c \le 2 \cdot 10^5$),表示矩阵的维度。矩阵有 $r$ 行和 $c$ 列。

接下来的 $r$ 行,每行包含一个长度为 $c$ 的二进制数字字符串,表示该矩阵。

输出格式

输出一个整数,表示将输入矩阵转换为带状二进制矩阵所需翻转的最少单元格数量。

样例

样例输入 1

3 4
1100
0101
0011

样例输出 1

1

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.