28分SOS
  • 板块P2004 领地选择
  • 楼主ywtank
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/9/7 10:45
  • 上次更新2024/9/7 13:52:22
查看原帖
28分SOS
1070431
ywtank楼主2024/9/7 10:45

想用二维前缀和,之后枚举首都左上角坐标,结果惨烈爆28。555555

#include <bits/stdc++.h>
using namespace std;
int a[1010][1010]={0},dp[1010][1010]={0};
int main(){
	int n,m,c,ma=INT_MIN,x,y;
	cin >> n >> m >> c;
	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++){
			dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+a[i][j];
		}
	}
	for(int x1=1;x1<=n-c+1;x1++){
		for(int y1=1;y1<=m-c+1;y1++){
			int x2=x1+c-1;
			int y2=y1+c-1;
			int lc=dp[x2][y2]-dp[x2][y1]-dp[x1][y2]+dp[x1][y1];
			if(lc>ma){
				ma=lc;
				x=x1;
				y=y1;
			}
		}
	}
	cout << x << ' ' << y;
	return 0;
} 
2024/9/7 10:45
加载中...