bzoj1218: [HNOI2003]激光炸弹
前缀和。
维护一下前缀和,枚举。
按道理复杂度在当时是过不去的吧。。
#include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn = 5000 + 10; const int k = 5001; int s[maxn][maxn]; int n,r,res; int main() { memset(s,0,sizeof(s)); scanf("%d%d",&n,&r); for(int i=1,a,b,c;i<=n;i++) { scanf("%d%d%d",&a,&b,&c); s[a+1][b+1]+=c; } for(int i=1;i<=k;i++) for(int j=1;j<=k;j++) s[i][j]+=s[i][j-1]; for(int i=1;i<=k;i++) for(int j=1;j<=k;j++) s[i][j]+=s[i-1][j]; res=0; for(int i=r;i<=k;i++) for(int j=r;j<=k;j++) { res=max(res,s[i][j]-s[i-r][j]-s[i][j-r]+s[i-r][j-r]); } printf("%d\n",res); return 0; }