AcWing 99. 激光炸弹
原题链接
简单
//题卡了内存;只能用一个二维数组存前缀和
#include<bits/stdc++.h>
using namespace std;
const int N=5006;
int a[N][N];
int main(){
int n,r;
cin>>n>>r;
while(n--){
int x,y,v;
cin>>x>>y>>v;
x=x+1,y=y+1;
a[x][y]+=v;
}
r=min(r,5001);//确定r的范围
for(int i=1;i<=5001;i++){
for(int j=1;j<=5001;j++){
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+a[i][j];
}
}
int res=0;
//需保证j-r>0和i-r>0;
for(int i=r;i<=5001;i++){
for(int j=r;j<=5001;j++){
res=max(res,a[i][j]-a[i-r][j]-a[i][j-r]+a[i-r][j-r]);
}
}
cout<<res<<endl;
return 0;
}