提交时间:2025-12-06 13:24:30
运行 ID: 365989
#include <iostream> #include <cmath> using namespace std; int a[500][500],sum[500][500]; int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; ++i) { for (int j = 1; j <= m; ++j) { cin >> a[i][j]; } } for (int i = 1; i <= n; i++) { int s = 0; for (int j = 1; j <= m; j++) { s += a[i][j]; sum[i][j] = sum[i - 1][j] + s ; } } int res = 0; int ma = min(n, m); for (int k = 2; k <= ma; k++) { int t= k * k; for (int i = 1; i + k - 1 <= n; i++) { for (int j = 1; j + k - 1 <= m; j++) { int x2 = i + k - 1; int y2 = j + k - 1; int cnt = sum[x2][y2] - sum[i - 1][y2] - sum[x2][j - 1] + sum[i - 1][j - 1]; if (abs(cnt - (t - cnt)) <= 1) { res++; } } } } cout << res << endl; return 0; }