这份代码为何RE
查看原帖
这份代码为何RE
477821
toolong114514楼主2024/1/26 08:51
#include<iostream>
using namespace std;
//#define int long long
const int INF=0x7fffffff;
int f1[3001][3001],f2[3001][3001];
int a[3001][3001],b[3001][3001];
int maxn1[3001][3001][26];
int maxn2[3001][3001][26];
int n,m,ans=INF;
signed main(){
	ios::sync_with_stdio(false);
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cin>>a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			f1[i][j]=max(f1[i-1][j],f1[i][j-1])+a[i][j];
		}
	}
	for(int i=n;i>0;i--){
		for(int j=m;j>0;j--){
			f2[i][j]=max(f2[i+1][j],f2[i][j+1])+a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			b[i][j]=f1[i][j]+f2[i][j]-a[i][j];
			maxn1[i][j][0]=maxn2[j][i][0]=b[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=25;j++){
			for(int k=1;k<=m;k++){
				maxn1[i][k][j]=max(maxn1[i][k][j-1],maxn1[i][k+(1<<(j-1))][j-1]);
			}
		}
	}
	for(int i=1;i<=m;i++){
		for(int j=1;j<=25;j++){
			for(int k=1;k<=n;k++){
				maxn2[i][k][j]=max(maxn2[i][k][j-1],maxn2[i][k+(1<<(j-1))][j-1]);
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int t1=b[i][j]-a[i][j],t2=0,t3=0;
			for(int sb=25;sb>=0;sb--){
				if((1<<sb)<=j){
					t2=max(maxn1[i][1][sb],maxn1[i][j-(1<<sb)][sb]);
					break;
				}
			}
			for(int sb=25;sb>=0;sb--){
				if((1<<sb)<=i){
					t3=max(maxn2[j][1][sb],maxn2[j][i-(1<<sb)][sb]);
					break;
				}
			}
			ans=min(ans,max(t1,max(t2,t3)));
		}
	}
	cout<<ans;
	return 0;
}
2024/1/26 08:51
加载中...