AcWing
  • 首页
  • 活动
  • 题库
  • 竞赛
  • 商店
  • 应用
  • 文章
    • 题解
    • 分享
    • 问答
  • 吐槽
  • 登录/注册

AcWing 320. 能量项链

作者: 作者的头像   Liyb ,  2022-08-04 08:15:32 ,  所有人可见 ,  阅读 4


0


#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
const int N = 210;
int w[N];
int f[N][N];
int n;
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i ++)
    {
        cin >> w[i];
        w[i + n] = w[i];
    }

    memset(f,-0x3f,sizeof f);
    //长度为3的时候才用进行合并
    for(int len = 2; len <= n + 1; len ++)//从1到1,上一题是从1到n
        for(int l = 1; l + len - 1 <= 2 * n; l ++)
        {
            int r = l + len - 1;
            if(len == 2)f[l][r] = 0;//一个珠子的情况
            else 
            for(int k = l + 1; k < r; k ++)//三个数中间的那个才能作为分界点
                f[l][r] = max(f[l][r], f[l][k] + f[k][r] + w[l] * w[r] * w[k]);
        }

    int res = 0;
    for(int i = 1; i <= n; i ++)res = max(res, f[i][i + n]);

    cout << res << endl;
    return 0;
}

0 评论

你确定删除吗?
1024
x

© 2018-2022 AcWing 版权所有  |  京ICP备17053197号-1
用户协议  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息