#638. 最大绿地方块

最大绿地方块

最大绿地方块

故事背景

城市规划部门将城市划分为网格,每个格子有绿化分值。为了新建一处公园,他们希望选择一个 k×k 的方形区域,使得总绿化分值最大。

题目描述

给定一个 n×m 的整数矩阵 a 和一个正整数 k(1 ≤ k ≤ min(n,m))。请你找出所有 k×k 子矩形中元素和的最大值,并输出该最大值。

输入格式

  • 第一行包含三个整数 n、m、k。
  • 接下来 n 行,每行 m 个整数,表示矩阵 a。

输出格式

输出一行,一个整数,表示所有 k×k 子矩形的最大元素和。

输入输出样例 #1

输入 #1

3 4 2
1 2 3 4
5 6 7 8
9 10 11 12

输出 #1

38

样例解释 #1

所有 2×2 子矩形中,右下角的子矩形 {7,8;11,12} 和最大,和为 7+8+11+12=38。

说明/提示

  • 数据范围示例:1 ≤ n,m ≤ 1000;-10^9 ≤ a[i][j] ≤ 10^9。
  • 提示:先构建二维前缀和,再枚举每个 k×k 的右下角坐标,用 O(1) 求其和,整体 O(nm)。