91pts求调
查看原帖
91pts求调
479099
_KamisatoAyaka楼主2024/10/10 18:08

91pts巨佬们求调orz

#include<bits/stdc++.h>
#define MAXN 0x3f3f3f3f
using namespace std;
inline int read(){
	char c;
	int f=1,x=0;
	c=getchar();
	while(!isdigit(c)){
		if(c=='-') f=-1;
		c=getchar();
	}
	while(isdigit(c)){
		x=(x<<3)+(x<<1)+int(c-48);
		c=getchar();
	}
	return f*x;
}
int n,m,maxx=-MAXN,maxy=-MAXN,minx=MAXN,miny=MAXN,maxt=INT_MIN;
int a[5007][5007],suma[5007][5007];
int main(){
	n=read(),m=read();
	for(int i=1;i<=n;i++){
		int x=read(),y=read(),v=read();
		a[x][y]=v;
		maxx=max(maxx,x);
		maxy=max(maxy,y);
	}
	++maxx;++maxy;
	suma[0][0]=a[0][0];
	for(int i=1;i<=maxx;i++) suma[i][0]=suma[i-1][0]+a[i][0];
	for(int i=1;i<=maxy;i++) suma[0][i]=suma[0][i-1]+a[0][i];
	for(int i=1;i<=maxx;i++){
		for(int j=1;j<=maxy;j++) suma[i][j]=suma[i-1][j]+suma[i][j-1]-suma[i-1][j-1]+a[i][j];
	}
	for(int i=0;i<=maxx;i++){
		for(int j=0;j<=maxy;j++){
			int x=max(0,i-m),y=max(0,j-m);
			maxt=max(maxt,suma[i][j]-suma[x][j]-suma[i][y]+suma[x][y]);
		}
	}
//	for(int i=0;i<=maxx;i++){
//		for(int j=0;j<=maxy;j++){
//			cout<<suma[i][j]<<' ';
//		}
//		puts("");
//	}
//	puts("");
	cout<<maxt;
}
2024/10/10 18:08
加载中...