二维前缀和

荒凉一梦 提交于 2020-02-13 01:27:39

其实很简单啦,就像这样

小学奥数既视感

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;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!