【洛谷】P2004 领地选择(二维前缀和)

二维前缀和模板啦,家人们,一眼出

pos:(up自己犯的错误,记录一下,也提醒大家)

x1<=n-c+1(+1哦·)

y1<=m-c+1

x2=x1+c-1(-1哦)

y2=y1+c-1

 okk,上!

ACcode:

#include
using namespace std;
const int N=1e3+10;
int a[N][N],s[N][N],n,m,c;
void solve(){
	cin>>n>>m>>c;
	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];
	}
	int mmax=-1<<30,x,y;
	for(int x1=1;x1<=n-c+1;x1++)
	for(int y1=1;y1<=m-c+1;y1++){
		int x2=x1+c-1,y2=y1+c-1;
		int ans=s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1];
		if(ans>mmax){
			mmax=ans;
			x=x1,y=y1;
		}
	}
	cout<

over~

你可能感兴趣的:(c++,算法,二维前缀和)