求解释RE
查看原帖
求解释RE
723466
banned_gutongxing楼主2023/11/19 18:22

本地运行AC,评测机RE

#include<bits/stdc++.h>
using namespace std;
const int X = 4400;
int n,m,a[X][X],h[X][X],l[X][X],r[X][X],sum[X][X],ans;
int Q(int x1,int y1,int x2,int y2){
	return sum[x2][y2]-sum[x2][y1-1]-sum[x1-1][y2]+sum[x1-1][y1-1];
}
signed main(){
	scanf("%d%d",&n,&m);
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			scanf("%d",&a[i][j]); 
			sum[i][j] = sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
		}
	}
	for(int i = 1;i<=n;i++){
		for(int j = m;j>=1;j--){
			if(a[i][j]){
				if(a[i][j+1]) r[i][j] = r[i][j+1]+1;
			}
		}
		for(int j = 1;j<=m;j++){
			if(a[i][j]){
				if(a[i][j-1]) l[i][j] = l[i][j-1]+1;
				if(a[i-1][j]){
					h[i][j] = h[i-1][j];
					l[i][j] = min(l[i][j],l[i-1][j]);
					r[i][j] = min(r[i][j],r[i-1][j]);
				}else h[i][j] = i;	
			}
		}
	}
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=m;j++){
			ans = max(ans,Q(h[i][j],j-l[i][j],i,j+r[i][j]));
		}
	}
	printf("%d",ans);
	return 0;
}
2023/11/19 18:22
加载中...