维生素C吃多了会上火-个人CSDN博文目录
2022蓝桥杯
题解
1.不同目标可能在同一位置所以 +=w
2.可能在(5000,5000),所以要算到5001
3.long long 超内存
#include<bits/stdc++.h>
using namespace std;
int s[6000][6000];
int main(){
int n,r;
cin>>n>>r;
int p,q;
for(int i=1;i<=n;i++){
int x,y,w;
cin>>x>>y>>w;
s[x+1][y+1]+=w;
p = max(p,x+1);
p = max(p,y+1);
}
for(int i=1;i<=p;i++){
for(int j=1;j<=p;j++){
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+s[i][j];
}
}
int maxx=-1;
if(r>p) r=p;
for(int i=r;i<=p;i++){
for(int j=r;j<=p;j++){
maxx = max(maxx,s[i][j]-s[i-r][j]-s[i][j-r]+s[i-r][j-r]);
}
}
cout<<maxx<<endl;
return 0;
}