• 最大加权矩形 luogu1719


    题目链接:https://www.luogu.org/problemnew/show/P1719

    这道题挺好做的 又是一道练前缀和的题

    #include <bits/stdc++.h>
    #define Max(a,b) a>b?a:b
    #define rep(i,j,n) for(register int i=j;i<=n;i++)
    using namespace std;
    typedef long long LL;
    inline LL read() { LL x=0; int f=1; char ch=getchar();
        while(!isdigit(ch)) { if (ch=='-') f=-1; ch=getchar();}
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar(); return x*f;
    }
    int n,m;
    const int N=1<<7;
    int a[N][N];
    signed main(){
        n=read();
        rep(i,1,n) rep(j,1,n) a[i][j]=read()+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
        LL ans=0;
        rep(x1,1,n) rep(y1,1,n) rep(x2,x1+1,n) rep(y2,y1+1,n) ans=Max(ans,a[x2][y2]-a[x1-1][y2]-a[x2][y1-1]+a[x1-1][y1-1]);
        cout << ans << endl ;
        return 0;
    }

    前缀和的代码


    同样 这需要DP来降低时间复杂度 提高效率orz

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    inline LL read () { LL res = 0 ;int f (1) ;char ch = getchar ();
        while (!isdigit(ch)) { if (ch == '-') f = -1 ;ch = getchar();}
        while (isdigit(ch)) res = (res << 1) + (res << 3) + (ch ^ 48) ,ch = getchar(); return res * f ;
    }
    int n,s[121][121],f[121],ans,p,x,ma;
    signed main() {
        n=read();
        for(register int i=1; i<=n; i++) f[i]=-1e9;
        for(register int i=1; i<=n; i++)
            for(register int j=1; j<=n; j++) {
                x=read();
                maxn=Max(maxn,x);
                s[i][j]=s[i-1][j]+x;
            }
        ans=-1e9;
        for(register int i=1; i<=n; i++)
            for(register int j=i; j<=n; j++)
                for(register int k=1; k<=n; k++) {
                    p=s[j][k]-s[i-1][k]; f[k]=max(p,f[k-1]+p); ans=max(ans,f[k]);
                }
        cout << ans << endl ;
        return 0;
    }
    不存在十全十美的文章 如同不存在彻头彻尾的绝望
  • 相关阅读:
    Codeforces 547D. Mike and Fish 题解
    Codeforces 521E. Cycling City 题解
    Codeforces 585E. Present for Vitalik the Philatelist 题解
    Codeforces 605E. Intergalaxy Trips 题解
    AGC033D
    第3次作业:卷积神经网络
    Linux下如何编写go语言程序实现菲波拉契数列
    C语言常见典型错误汇总(助教)
    第一次作业:深度学习基础
    数论复习_欧几里得算法与扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/qf-breeze/p/10426486.html
Copyright © 2020-2023  润新知