zoukankan      html  css  js  c++  java
  • 【TYVJ 1056】能量项链

    【题目链接】传送门

    【题解大意】

    这题好水,可我还是调了一会,以下为调试中出现过的错误:

    1.更新取值时弄清楚区间范围是[l,k][k+1,r]还是[l,k][k,r]

    2.对于环形处理时左端点的取值最大可以到达(n<<1)要记住

    3.每题的枚举k具体的起止到底是[l,r]还是[l+1,r]还是[l+1,r-1]...要根据题目的理解各异

    【code】

    #include<bits/stdc++.h>
    using namespace std;
    #define File ""
    #define ll long long
    #define ull unsigned long long
    #define rep(k,i,j) for(int k = i;k <= j; ++k)
    #define FOR(k,i,j) for(int k = i;k >= j; --k)
    inline void file(){
        freopen(File".in","r",stdin);
        freopen(File".out","w",stdout);
    }
    inline int read(){
        int x=0,f=1;   char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}
        while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0'; ch=getchar();}
        return x*f;
    }
    const int mxn = 105;
    int n;
    int a[mxn<<1],f[mxn<<1][mxn<<1];
    int main(){
    //    file();
        n = read();
        rep(i,1,n) a[n+i] = a[i] = read();
    
        memset(f,0,sizeof f);
        rep(i,1,n<<1) f[i][i] = a[i];
        
        rep(len,2,n+1){
            rep(l,1,(n<<1)-len+1){
                int r = l+len-1;
                rep(k,l+1,r-1)
                    f[l][r] = max(f[l][r],f[l][k]+f[k][r]+a[l]*a[k]*a[r]);
            }
        }
    //    rep(i,1,n) printf("%d
    ",f[i][i+n]);
    //    puts("");
        int ans = 0;
        rep(i,1,n) ans = max(ans,f[i][i+n]);
        printf("%d
    ",ans);
        return 0;
    }
    /*
    4
    2 3 5 10
    */
    View Code
    G102的孤儿们都要好好的啊。
  • 相关阅读:
    $.each
    KBASP.NET 2.0 網站部署的變革
    详尽解析window.event对象
    Jquery1.2.6 源码分析
    索引学习2聚族索引、非聚族索引、组合索引
    在C#中使用WIA获取扫描仪数据
    Adobe Photoshop CS5简体中文版+完美破解方法
    j2me开发图片加载
    数据库操作
    WPF之DataGrid应用
  • 原文地址:https://www.cnblogs.com/ve-2021/p/10764589.html
Copyright © 2011-2022 走看看