• [日常摸鱼]bzoj1218[HNOI2003]激光炸弹-二维前缀


    题意:二维网格一些格子有权值,求用边长为$r$的正方形能覆盖到格子权值和的最大值,格子大小$ leq 5000$

    非常裸的二维前缀,然而

    题目下标从0开始!

    QAQ

    要是比赛就要爆零啦…

    #include<cstdio>
    #define rep(i,n) for(register int i=1;i<=n;i++)
    #define REP(i,a,b) for(register int i=a;i<=b;i++)
    const int N=5005;
    int n,r,w[N][N],x,y,v,p,q,ans;
    inline int max(int a,int b){return a>b?a:b;}
    int main()
    {
        scanf("%d%d",&n,&r);p=q=r;
        rep(i,n){scanf("%d%d%d",&x,&y,&v);x++;y++;w[x][y]=v;p=max(p,x);q=max(q,y);}
        rep(i,p)rep(j,q)w[i][j]=w[i][j]+w[i-1][j]+w[i][j-1]-w[i-1][j-1];
        REP(i,r,p)REP(j,r,q)ans=max(ans,w[i][j]-w[i-r][j]-w[i][j-r]+w[i-r][j-r]);
        printf("%d",ans); 
        return 0;
    }
  • 相关阅读:
    1015. 德才论
    1014. 福尔摩斯的约会
    1013. 数素数
    1012. 数字分类
    1011. A+B和C
    1010. 一元多项式求导
    1009. 说反话
    1008. 数组元素循环右移问题
    1007. 素数对猜想
    1006. 换个格式输出整数
  • 原文地址:https://www.cnblogs.com/yoshinow2001/p/8413764.html
Copyright © 2020-2023  润新知