loj#P3177. 「IOI2019」矩形区域

「IOI2019」矩形区域

题目描述

19 世纪初,统治者下令在俯瞰美丽河景的高原上建造一座宫殿。这块高原被看做是一个由正方形单元格组成的 n×mn \times m 网格。网格的行从 00n1n-1 编号,列从 00m1m-1 编号。第 ii 行第 jj 列(0in1,0jm10 \le i \le n - 1, 0 \le j \le m - 1)的单元格记为单元格 (i,j)(i, j)。每个单元格 (i,j)(i, j) 有特定的海拔高度,记为 a[i][j]a[i][j]

统治者指示他的建筑师选择一个矩形区域来建造宫殿。该区域不能包含网格边界(第 00 行,第 n1n-1 行,第 00 列,以及第 m1m-1 列)上的任何单元格。为此,建筑师应选出四个整数 r1r_1r2r_2c1c_1c2c_21r1r2n21 \le r_1 \le r_2 \le n - 21c1c2m21 \le c_1 \le c_2 \le m - 2,对应于包括所有满足 r1ir2r_1 \le i \le r_2c1jc2c_1 \le j \le c_2 的单元格 (i,j)(i, j) 的矩形区域。

此外,一个区域被认为是合法的,当且仅当对于该区域中的每个单元格 (i,j)(i, j),以下条件成立:对于与该区域相邻的、位于第 ii 行的两个单元格(单元格 (i,c11)(i, c_1-1)(i,c2+1)(i, c_2+1)),以及与该区域相邻的、位于第 jj 列的两个单元格(单元格 (r11,j)(r_1-1, j)(r2+1,j)(r_2+1, j)),单元格 (i,j)(i, j) 的海拔高度必须严格小于这四个单元格的海拔高度。

你的任务是帮助建筑师统计可建宫殿的合法区域的数量(也就是所对应区域为合法的 r1,r2,c1r_1, r_2, c_1c2c_2 的数量)。

输入格式

第一行,两个整数 nnmm,表示网格的长和宽。
i+2i+2 行(0in10 \le i \le n-1):mm 个整数,为 a[i][0],a[i][1],,a[i][m1]a[i][0], a[i][1], \cdots, a[i][m - 1]

输出格式

一行,一个整数,表示合法区域的数量。

6 5
4 8 7 5 6
7 4 10 3 5
9 7 20 14 2
9 14 7 3 6
5 7 5 2 7
4 5 13 5 6
6

数据范围与提示

对于所有数据:

  • 1n,m25001 \le n, m \le 2500
  • 0a[i][j]7 000 0000 \le a[i][j] \le 7\ 000\ 0000in1,0jm10 \le i \le n - 1, 0 \le j \le m - 1

详细子任务附加限制与分值如下表:

子任务编号 附加限制 分值
11 n,m30n, m \le 30 88
22 n,m80n, m \le 80 77
33 n,m200n, m \le 200 1212
44 n,m700n, m \le 700 2222
55 n3n \le 3 1010
66 0a[i][j]10 \le a[i][j] \le 1 1313
77 没有任何附加限制 2828