80pts求助,玄关
  • 板块P1565 牛宫
  • 楼主yhcorey
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/27 18:27
  • 上次更新2024/8/27 18:51:01
查看原帖
80pts求助,玄关
1355953
yhcorey楼主2024/8/27 18:27

rt,我的提交记录

#include<bits/stdc++.h>
using namespace std;
long long s[205][205],a[205][205],ans;
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++){
		for(int j=1;j<=m;j++){
			s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+a[i][j];
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=i;j<=n;j++){
			for(int k=1;k<=m;k++){
				long long head=k,tail=m,mid,sum=0;
				while(head<tail){
					mid=(head+tail+1)/2;
					long long sum2=s[j][mid]-s[i-1][mid]-s[j][k-1]+s[i-1][k-1];
					if(sum2>=0){
						if((j-i+1)*(mid-k+1)>sum) sum=(j-i+1)*(mid-k+1);
						head=mid+1;
					}
					else tail=mid-1;
				}
				long long sum2=s[j][m]-s[i-1][k]-s[j][k-1]+s[i-1][k-1];
				if(sum2>=0){
					if((j-i+1)*(m-k+1)>sum) sum=(j-i+1)*(m-k+1);
				}
				ans=max(ans,sum);
			}
		}
	}
	cout<<ans;
	return 0;
}```
2024/8/27 18:27
加载中...