其实很简单啦,就像这样
小学奥数既视感
luogu 2280 激光项链
#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++)
using namespace std;
const int N=5010;
int g[N][N],n,r,x,y,v;
int main(){
ios::sync_with_stdio(false);
cin>>n>>r;
rep(i,1,n){
cin>>x>>y>>v;
g[x+1][y+1]=v;}
rep(i,1,5001)rep(j,1,5001)
g[i][j]+=g[i-1][j]+g[i][j-1]-g[i-1][j-1];
int ans=0;
for(int i=0;i<=5000-r;i++)
for(int j=0;j<=5000-r;j++)
ans=max(ans,g[i+r][j+r]-g[i+r][j]-g[i][j+r]+g[i][j]);
printf("%d",ans);return 0;
}
来源:https://www.cnblogs.com/asdic/p/9579943.html