一个由 n 行 m 列构成的矩阵(从上到下对行 1 到 n 编号,从左到右对列 1 到 m 编号),
第 i 行第 j 列中有一个正整数 W_{ij}Wij 。例如下面是一个 3 行 4 列的矩阵。
现在从中选取一个 p 行 q 列的子矩阵,例如下面黑框中选取的是一个 2 行 3 列的子矩阵。
仔细观察会发现,从上面的矩阵中选取 2 行 3 列的子矩阵共有 4 种不同的方法。
现在请你找这样一个子矩阵,满足以下条件:
将子矩阵的 q 列从左到右编号为 1 到 q,删除子矩阵中所有编号为奇数的列,或者删除子矩阵中所有编号为偶数的列,然后 用子矩阵中剩下的数之和 减掉 子矩阵中被删除的数之和,得到一个结果 S,S 最大的子矩阵就是我们要找的子矩阵,注意,这样的矩阵可能有多个。
例如上面黑框中的子矩阵,删除编号为奇数的列(下图 1)或删除编号为偶数的列(下图 2)。(阴影部分为删除的列)
按照计算规则,图 1 中剩下的数之和为 8,被删除的数之和为 9,所以 S=-1,图 2 中剩下的数之和为 9,被删除的数之和为 8,所以 S=1,也就是说当选择这个子矩阵时,S 的最大值为 1。当然可以选择其他子矩阵来获取更大的 S。
3 4 2 3
1 5 2 3
2 3 4 2
8 2 4 3
13
对于 30%的数据保证 1≤n≤50,1≤m≤501≤n≤50,1≤m≤50。
对于 70%的数据保证 1≤n≤300,1≤m≤3001≤n≤300,1≤m≤300。
对于 100%的数据保证 1≤n≤1000,1≤m≤10001≤n≤1000,1≤m≤1000。
另外,所有的数据保证 1≤p≤n,1≤q≤m,1≤W_{ij}≤1001≤p≤n,1≤q≤m,1≤Wij≤100