这道题ACwing与洛谷上都有。
#include<bits/stdc++.h> using namespace std; int n,r,v[5021][5021],ans,x,y,vi; int main() { scanf("%d%d",&n,&r); for(int i=1;i<=n;i++) { scanf("%d%d%d",&x,&y,&vi); v[x+1][y+1]=vi; } for(int i=1;i<=5001;i++) for(int j=1;j<=5001;j++) v[i][j]+=v[i-1][j]+v[i][j-1]-v[i-1][j-1]; for(int i=0;i<=5000-r;i++) for(int j=0;j<=5000-r;j++) ans=max(ans,v[i+r][j+r]-v[i+r][j]-v[i][j+r]+v[i][j]); printf("%d\n",ans); return 0; }
原文:https://www.cnblogs.com/ruanmowen/p/12715247.html