70pts 求条!速!
查看原帖
70pts 求条!速!
1328264
wjy7777楼主2025/8/2 16:25

调好必关!

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,a[2005][2005],s[2005][2005],Max=-100000000,m,x,y;
signed main() {
	cin.tie(0);
	cout.tie(0);
	ios::sync_with_stdio(0);
	cin>>n>>m;
	for (int i=1; i<=n; i++)	{
		for (int j=1; j<=m; j++) {
			cin>>a[i][j];
			s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
		}
	}
	for(int k=1; k<=min(n,m); k++) {
		for (int i=1; i<=n; i++) {
			for (int j=1; j<=m; j++) {
				if(k<=i&&k<=j) {
					if(Max<=s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k]) {
						bool f1=true,f2=true;
						for(int x=i,y=j;x>=i-k+1,y>=j-k+1;x--,y--){
							if (a[x][y]==0){
								f1=false;
								break;
							}
						}
						for(int x=i-k+1,y=j;x<=i,y>=j-k+1;x++,y--){
							if (a[x][y]==0){
								f2=false;
								break;
							}
						}
						if (f1||f2){
							Max=s[i][j]-s[i-k][j]-s[i][j-k]+s[i-k][j-k];
						}
					}
				}
			}
		}
	}

	cout<<Max;
	return 0;
}

马蜂恐怖,见谅

2025/8/2 16:25
加载中...