80pts 求调+口头表扬
查看原帖
80pts 求调+口头表扬
1365127
dendky楼主2025/7/25 21:03
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, m, a[505][505], f[505][505], ans;
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin>>n>>m;
    for (int i=1; i<=n; i++) 
    	for (int j=1; j<=m; j++) {
    		cin>>a[i][j];
    		f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+a[i][j];
		}
	for (int i=1; i<=n; i++) {
//		if (f[i+1][m+1]+f[i][1]-f[i][m+1]-f[i+1][m] == 0) continue;
		for (int j=1; j<=m; j++) {
			if (a[i][j]==0) continue;
			for (int x=1; x<=n; x++) {
				int y=j+abs(x-i);
//				if (f[x+1][m+1]+f[x][1]-f[x][m+1]-f[x+1][m] == 0) continue;
				if (a[x][y]==0) continue;
//				if (f[x+1][y+1]+f[i][j]-f[i][y+1]-f[x+1][j] != x-i+1) continue;
				int cnt=0;
				for (int e=min(i, x); e<=max(i, x); e++) 
					for (int f=min(j, y); f<=max(j, y); f++) 
						cnt+=a[e][f];
				if (cnt == abs(x-i)+1) ans=max(ans, cnt);
			}
		}
	}
	cout<<ans;
    return 0;
}

2025/7/25 21:03
加载中...