码迷,mamicode.com
首页 > 其他好文 > 详细

能量项链

时间:2020-06-06 21:24:30      阅读:48      评论:0      收藏:0      [点我收藏+]

标签:include   bit   names   n+1   直接   its   表示   ace   color   

#include <bits/stdc++.h>
using namespace std;
//算法提高,能量项链,就是可以转圈的矩阵连乘问题
//把1->n扩展为1->n->n+1->2*n,然后对其进行dp,这样就循环起来了
int dp[2000][2000],n,a[1000],ans=0;//用i表示左维度,i+1表示右维度
int main() {
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    a[n+1]=a[1];
    memset(dp,0, sizeof(dp));
    //[,]
    //注意以l开始循环,如果以i的话,会导致直接算1->n,就错了
    for(int l=1;l<=n;l++){
        for(int i=1;i<=2*n-l+1;i++){
            int j=l+i-1;
            for(int k=i;k<j;k++){
                dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i>n?i-n:i]*a[j+1>n?j+1-n:j+1]*a[k+1>n?k+1-n:k+1]);
            }
            ans=max(ans,dp[i][j]);
        }
    }
    cout<<ans<<endl;
    return 0;
}

 

能量项链

标签:include   bit   names   n+1   直接   its   表示   ace   color   

原文地址:https://www.cnblogs.com/MorrowWind/p/13056323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!