1218: [HNOI2003]激光炸弹
分析:经典的二维前缀和问题。在二维平面上,根据容斥原理,从(1,1)到(x,y)的二维前缀和。 同理,根据容斥原理,二维区间
到
的前缀和就是
#include "bits/stdc++.h"using namespace std;const int maxn=5e3+10;int n,a[maxn][maxn],R;int main(){ //freopen("in.txt","r",stdin); scanf("%d%d",&n,&R); for(int i=1;i<=n;i++){ int x,y,v; scanf("%d%d%d",&x,&y,&v); a[x+1][y+1]+=v; } 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 mx=0; for(int i=R;i<=5001;i++) for(int j=R;j<=5001;j++) mx=max(mx,a[i][j]-a[i-R][j]-a[i][j-R]+a[i-R][j-R]); printf("%d\n",mx); return 0;}