bzoj1218 激光炸弹

bz上难得一见的水题啊。

我们发现:这个SB居然只要枚举就行了!!!

我TM......

 1 /**************************************************************
 2     Problem: 1218
 3     Language: C++
 4     Result: Accepted
 5     Time:1472 ms
 6     Memory:147892 kb
 7 ****************************************************************/
 8  
 9 #include <cstdio>
10 #include <algorithm>
11 using namespace std;
12 const int N = 5010;
13  
14 int sum[N][N],r;
15 short a[N][N];
16 /*
17 int getsum(int i,int j) {
18     return sum[i+r][j+r]+sum[i-1][j-1]-sum[i+r][j-1]-sum[i-1][j+r];
19 }
20 */
21 int main(){
22     int n,x,y,v,mx,my;
23     scanf("%d%d",&n,&r);
24     r--;
25     mx=my=r;
26     for(int i=1;i<=n;i++) {
27         scanf("%d%d%d",&x,&y,&v);
28         x++;y++;
29         a[x][y]+=v;
30         mx=max(mx,x);
31         my=max(my,y);
32     }
33     mx++;my++;
34     for(int i=1;i<=mx;i++){
35         for(int j=1;j<=my;j++) {
36             sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
37         }
38     }
39     int ans=-1;
40     for(int i=1;i+r<=mx;i++) {
41         for(int j=1;j+r<=my;j++) {
42             ans=max(ans,sum[i+r][j+r]+sum[i-1][j-1]-sum[i+r][j-1]-sum[i-1][j+r]);
43         }
44     }
45     printf("%d",ans);
46     return 0;
47 }
AC代码

 

posted @ 2018-05-06 15:40  garage  阅读(128)  评论(0编辑  收藏  举报