二维前缀和

其实很简单啦,就像这样

小学奥数既视感

luogu 2280 激光项链

#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++)
using namespace std;
const int N=5010;
int g[N][N],n,r,x,y,v;
int main(){
    ios::sync_with_stdio(false);
    cin>>n>>r;
    rep(i,1,n){
        cin>>x>>y>>v;
        g[x+1][y+1]=v;}
    rep(i,1,5001)rep(j,1,5001)
        g[i][j]+=g[i-1][j]+g[i][j-1]-g[i-1][j-1];
    int ans=0;
    for(int i=0;i<=5000-r;i++)
    for(int j=0;j<=5000-r;j++)
        ans=max(ans,g[i+r][j+r]-g[i+r][j]-g[i][j+r]+g[i][j]);
    printf("%d",ans);return 0;
}

 

posted @ 2018-09-03 18:07  ASDIC减除  阅读(550)  评论(0编辑  收藏  举报