#4323. Coci2015 Police

Coci2015 Police

题目描述

nn 个书架,每个书架可以容纳 mm 本书。给出了若干本书,每本书有一个正整数的唯一编号,且编号不超过 n×mn\times m

给出了初始时各个书架里面的书的编号,即给出二维数组 s1n,1ms_{1\cdots n,1\cdots m}si,j=ks_{i,j}=k 的意义是第 ii 个书架的第 jj 个格子放的那本书的编号是 kk。如果 kk 等于 00 则说明该格子没有书,是空的。

一个格子最多只能放一本书。再给出二维数组 t1n,1mt_{1\cdots n,1\cdots m},表示最终你需要把这些书经过移动之后达到的目的。你移动书的过程需要满足如下两个条件:

  • 你可以把某一个书架的书向左或者向右推动一格。这就是横向的“推”动作,你可以“推”任意多次。

  • 你可以拿起某一个书架的一本书,然后把这本书放到任意书架的空格子里。这就是“拿”动作。你可以“拿”任意多次。注意:当你“拿”起一本书时,你是不能做“推”的动作。则“拿”起一本书,接下来的那个动作必须是把这本书放到一个空格子里。每次只能“拿”起一本书。

现在你的任务是:用最少次数的“拿”动作,去完成目标,如果无法完成目标,输出 -1

输入格式

第一行两个整数 n,mn,m

接下来 nn 行,每行 mm 个数,表示数组 ss

接下来 nn 行,每行 mm 个数,表示数组 tt

输出格式

输出一行一个整数,表示最少需要“拿”的次数。

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

数据规模与约定

对于 100%100\% 的数据,1n,m1031\leq n,m\leq 10^3