#P13933. [蓝桥杯 2022 省 Java B] 最大子矩阵

[蓝桥杯 2022 省 Java B] 最大子矩阵

题目描述

小明有一个大小为 N×MN \times M 的矩阵,可以理解为一个 NNMM 列的二维数组。

我们定义一个矩阵 mm 的稳定度 f(m)f(m)f(m)=max(m)min(m)f(m) = \max(m) - \min(m),其中 max(m)\max(m) 表示矩阵 mm 中的最大值,min(m)\min(m) 表示矩阵 mm 中的最小值。现在小明想要从这个矩阵中找到一个稳定度不大于 limitlimit 的子矩阵,同时他还希望这个子矩阵的面积越大越好(面积可以理解为矩阵中元素个数)。

子矩阵定义如下:从原矩阵中选择一组连续的行和一组连续的列,这些行列交点上的元素组成的矩阵即为一个子矩阵。

输入格式

第一行输入两个整数 NNMM,表示矩阵的大小。

接下来 NN 行,每行输入 MM 个整数,表示这个矩阵。

最后一行输入一个整数 limitlimit,表示限制。

输出格式

输出一个整数,分别表示小明选择的子矩阵的最大面积。

3 4
2 0 7 9
0 6 9 7
8 4 6 4
8
6

提示

【样例说明】

满足稳定度不大于 88 的且面积最大的子矩阵总共有三个,他们的面积都是 66(粗体表示子矩阵元素):

$$\begin{array}{llll}\bf2 & \bf0 & 7 & 9 \\\bf0 & \bf6 & 9 & 7 \\\bf8 & \bf4 & 6 & 4\end{array} $$$$\begin{array}{llll}2 & 0 & \bf7 & \bf9 \\0 & 6 & \bf9 & \bf7 \\8 & 4 & \bf6 & \bf4\end{array} $$$$\begin{array}{llll}2 & 0 & 7 & 9 \\0 & \bf6 & \bf9 & \bf7 \\8 & \bf4 & \bf6 & \bf4\end{array} $$

【评测用例规模与约定】

评测用例编号 NN MM
1,21, 2 1N101 \leq N \leq 10 1M101 \leq M \leq 10
3,43, 4 N=1N = 1 M100000M \leq 100000
5125 \sim 12 1N101 \leq N \leq 10 M10000M \leq 10000
132013 \sim 20 1N801 \leq N \leq 80 1M801 \leq M \leq 80

对于所有评测用例,00 \leq 矩阵元素值, limit105limit \leq 10^5