logo AlgoBeat OnlineJudge
登录 注册

#102321. [BZOJ 2321] [BeiJing2011集训]星器

内存限制:128 MiB 时间限制:1000 ms 标准输入输出
题目类型:传统 评测方式:文本比较
上传者: 匿名

题目描述

Magic Land 上的时间又过了若干世纪……

现在,人们谈论着一个传说:从前,他们的祖先来到了一个位于东方的岛屿,那里简直就是另外一个世界。善于分析与构造的 Magic Land 上的人们总是不明白那里的人们是如何不借助精确的实验与计算驱动和操纵魔法。

偶然地,一个魔法使(Magician)来到了 Magic Land,在临走的时候留下了一个神奇的盒子,叫做星器(Casket of star)。

虽然不知道这个盒子是做什么的,但是经过了大量的实验和计算后,人们已经清楚它的一些事实:

  1. 星器之中有 个区域,可看作分成 行和 列的格子,每个区域之中有若干单位的称为「星」的对象,这个对象的最小单位已经被确定,所以,这个数量总是整数。
  2. 魔法使可以驱动星器中位于同一行或同一列不相邻(有公共边的区域称为相邻的)两个区域中各 单位的「星」,使得它们分别向中心移动
  3. 每一次使用 种的方法驱动「星」,将会产生魔力,魔法使会得到这一部分魔力。魔力的量等于这个两个区域之间所间隔的区域数

这样,我们可以用一个 的数表来表示星器的状态,比如 时:

2 0 1
5 1 4

1 2 0
5 1 4

当星器为左图的状态时,通过操纵第一行的第 个区域中的「星」(加粗的数字对应的区域),变为右图所示的状态,同时,将产生 单位的魔力(因为这两个区域之间恰好隔了 个区域)。

在经过了进一步的研究之后,人们知道了这个星器最初的状态()以及最终被他们得到时的状态()。

你希望知道,星器最多帮助它的拥有者提供了多少的魔力。即:经过一系列上述操作由初态()变为终态(),至多产生多少魔力。

需要注意的是,显然操作过程中每个区域内「星」的数量不能是负的,即:如果那个区域已经没有「星」了,当然就不能继续操作了。

输入格式

第一行包含两个正整数 表示星器的大小。

接下来的 行,每行包含 个自然数:,描绘了初态()。

在一个空行后的 行,每行包含 个自然数:,描绘了终态()。

输出格式

输出一个正整数,表示至多产生的魔力。

样例

样例输入 #1

5 5
1 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 1 0 1 1
1 0 0 0 0

0 0 0 0 0
0 0 0 0 1
2 0 0 0 1
0 0 2 0 0
0 0 0 0 0

样例输出 #1

7

样例说明 1

唯一的一种操作方法是:

对第 5 列的两个「星」进行一次操作,产生魔力

对第 1 列的两个「星」进行两次操作,产生魔力

对第 4 行的两个「星」进行一次操作,产生魔力

一共产生 单位的魔力。

样例输入 #2

1 4
10 20 30 40

0 0 100 0

样例输出 #2

50

数据范围与提示

对于 的数据,,如样例 2;

对于 的数据,

所有数据保证了至少存在一个操作方法使得星器由初态变为终态,同时保证了初态与终态不是完全相同的。