#P3400. 仓鼠窝

    ID: 3988 远端评测题 1000ms 125MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>单调队列洛谷原创洛谷月赛

仓鼠窝

题目描述

萌萌哒的 Created equal 是一只小仓鼠,小仓鼠自然有仓鼠窝啦。

仓鼠窝是一个由 n×mn\times m 个格子组成的行数为 nn、列数为 mm 的矩阵。小仓鼠现在想要知道,这个矩阵中有多少个子矩阵。

比如说有一个 2×32\times 3 的矩阵,那么 1×11\times 1 的子矩阵有 66 个,1×21\times 2 的子矩阵有 44 个,1×31\times 3 的子矩阵有 22 个,2×12\times 1 的子矩阵有 33 个,2×22\times 2 的子矩阵有 22 个,2×32\times 3 的子矩阵有 11 个,所以子矩阵共有 6+4+2+3+2+1=186+4+2+3+2+1=18 个。

可是仓鼠窝中有的格子被破坏了。现在小仓鼠想要知道,有多少个内部不含被破坏的格子的子矩阵。

输入格式

第一行两个正整数 nn 和 mm,分别表示仓鼠窝的行数 nn,列数 mm。

接下来 nn 行,每行 mm 个数,每个数代表对应的格子,非 00 即 11。若为 00,表示这个格子被破坏;反之代表这个格子是完好无损的。

输出格式

仅一个正整数,表示未被破坏的子矩阵的个数。

3 4
1 1 1 1
1 0 1 1
1 1 0 1
26

提示

本题时限 1s1\text{s},内存限制 125M125\text{M},因新评测机速度较为接近 NOIP 评测机速度,请注意常数问题带来的影响。

数据编号 nn mm 特殊性质
1,2,31, 2, 3 22 无
44 1010
5,65, 6 20002000 所有格子均未被破坏
77 25002500 30003000 有且仅有一个格子被破坏
88 30003000 25002500
99 200200 无
10,11,1210, 11, 12 500500
13,1413, 14 10001000 10001000
1515 15001500
1616 25002500 25002500
1717 30003000
1818 30003000 25002500
19,2019, 20 30003000