#F. 最大正方形

最大正方形

题目描述

猫娘正在用 1×11 \times 1 的地砖铺设一面 nn 行 mm 列的墙壁。墙壁用一个 0101 矩阵表示,其中 11 表示该位置可以放砖,00 表示该位置是空洞不能放砖。

请帮猫娘算出:只利用 11 的位置,能铺出的最大正方形的面积是多少?

输入格式

第一行两个整数 n,mn, m(1≤n,m≤50001 \le n, m \le 5000)。接下来 nn 行,每行 mm 个用空格隔开的整数(00 或 11)。

输出格式

一个整数——最大正方形的面积。

4 5
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
4
3 3
1 1 1
1 1 1
1 1 1
9

样例解释

  • 第一个样例中,右下方有一个 2×22 \times 2 的全 11 区域,面积为 44(3×33 \times 3 的区域被左下角的 00 破坏了)。
  • 第二个样例中,整个 3×33 \times 3 的墙壁都可以铺满,面积为 3×3=93 \times 3 = 9。

提示说明

  • 若矩阵中不存在 11,则答案为 00。
  • 数据规模最大为 5000×50005000 \times 5000,请使用 O(nm)O(nm) 的动态规划(dpi,jdp_{i,j} 表示以 (i,j)(i,j) 为右下角的最大全 11 正方形边长),注意内存不要开成 5000×50005000 \times 5000 的 int 方阵以上。