一定要注意xx,yy初始化的值,要是r
#include<bits/stdc++.h>
using namespace std;
int n,r;
const int M=5005;
int a[M][M];
int main(){
cin>>n>>r;
int xx=r;
int yy=r;
for(int i=1;i<=n;i++){
int x,y,v;
cin>>x>>y>>v;
x++; y++;
a[x][y]=v;
xx=max(xx,x);
yy=max(yy,y);
}
//求前缀和
// cout<<xx<<" "<<yy<<endl;
for(int i=1;i<=xx;i++){
for(int j=1;j<=yy;j++){
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j];
}
}
//搜索每一个正方形,求取区间和
int ans=0;
for(int i=r;i<=xx;i++){
for(int j=r;j<=yy;j++){
ans=max(ans,a[i][j]-a[i-r][j]-a[i][j-r]+a[i-r][j-r]);
}
}
cout<<ans<<endl;
return 0;
}