QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 64 MB 満点: 160

#16397. 警察

統計

图书管理员 Jurica 的图书馆里有 $N$ 个书架,每个书架可以容纳 $M$ 本书。Jurica 是一个优秀的图书管理员,所以他决定对图书馆进行盘点,并在必要时将不在原位的书放回正确的位置。他按以下方式移动书籍:

  • 在书架上将书向左或向右移动一个位置(如果左边或右边的位置是空闲的)。
  • 从书架上拿下一本书,并将其放入该书架或其他书架上的空闲位置。

细心的 Jurica 在手里拿着书时不能移动其他书。此外,他一次不能拿超过一本书。

自从 Jurica 必须把所有印刷版维基百科从一楼搬到二楼后,他就一直背痛,所以现在他想在尽可能少拿起书的情况下把所有的书都放回原位,因为他的背很疼。他最少需要拿起书多少次?

输入格式

第一行包含整数 $N$ 和 $M$($1 \le N \le 1000$,$1 \le M \le 1000$)。

接下来的 $N$ 行,每行包含 $M$ 个整数,第 $i$ 行描述第 $i$ 个书架的当前状态。

数字 $0$ 表示书架上的空位,非 $0$ 的数字表示该位置有一本书,并用该数字标记。所有的书都用 $1$ 到 $K$ 之间不同的数字标记,其中 $K$ 是书架上书的总数。

之后,紧接着另外 $N$ 行,每行包含 $M$ 个整数,第 $i$ 行描述第 $i$ 个书架的目标状态。

在书架的初始状态和最终状态中,会出现相同的书。

输出格式

输出的第一行也是唯一一行必须包含所需的最小拿起次数,如果无法按上述方式排列书籍,则输出 -1

子任务

在占总分 50% 的测试用例中,每本书在初始状态和最终状态下都位于同一个书架上。

样例

输入样例 1

2 4
1 0 2 0
3 5 4 0
2 1 0 0
3 0 4 5

输出样例 1

2

输入样例 2

3 3
1 2 3
4 5 6
7 8 0
4 2 3
6 5 1
0 7 8

输出样例 2

4

输入样例 3

2 2
1 2
3 4
2 3
4 1

输出样例 3

-1

说明

第一个样例的解释:Jurica 将把书 1 向右移动一个位置,然后拿起书 2 并将其移动到第一个书架的第一个位置。他拿起书 5 并将其放在第二个书架的第四个位置。

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.