[ABC311E] Defect-free Squares
考虑令 \(f[i][j]\) 表示以 \((i,j)\) 为右下角的最大正方形的边长,以其为右下角的正方形恰好为 \(f[i][j]\),答案就是 \(\sum f[i][j]\)。
然后考虑转移。对于一个格子,如果要扩充正方形,必定要往左上角、左、上三个方向扩张,且取决于最小者,即 \(f[i][j]=\min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1\)。
另一个做法是枚举左上角,二分即可,带一只 \(\log\),大约为 \(10^8\),可过。