传送门

描述

在Mars星球上,每个Mars人都随身佩带着一串能量项链,在项链上有 N 颗能量珠。

能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。

并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。

因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。

如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为 r,尾标记为 n,则聚合后释放的能量为 mrn(Mars单位),新产生的珠子的头标记为 m,尾标记为 n。

需要时,Mars人就用吸盘夹住相邻的两颗珠子,通过聚合得到能量,直到项链上只剩下一颗珠子为止。

显然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项链释放出的总能量最大。

例如:设N=4,4颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10) (10,2)。

我们用记号⊕表示两颗珠子的聚合操作,(j⊕k)表示第 j,k 两颗珠子聚合后所释放的能量。则

第4、1两颗珠子聚合后释放的能量为:(4⊕1)=1023=60。

这一串项链可以得到最优值的一个聚合顺序所释放的总能量为((4⊕1)⊕2)⊕3)= 1023+1035+10510=710。

输入格式

输入的第一行是一个正整数 N,表示项链上珠子的个数。

第二行是N个用空格隔开的正整数,所有的数均不超过1000,第 i 个数为第 i 颗珠子的头标记,当i<N时,第 i 颗珠子的尾标记应该等于第 i+1 颗珠子的头标记,第 N 颗珠子的尾标记应该等于第1颗珠子的头标记。

至于珠子的顺序,你可以这样确定:将项链放到桌面上,不要出现交叉,随意指定第一颗珠子,然后按顺时针方向确定其他珠子的顺序。

输出格式

输出只有一行,是一个正整数 E,为一个最优聚合顺序所释放的总能量。

数据范围

4≤N≤100,
1≤E≤2.1∗109

输入样例:

4
2 3 5 10

输出样例:

710

对于这道题,其实和石子合并没有太大的差别,差别就是计算合并权重的方式和这道题是环形的

因为这个是环形,所以我们需要将他变成线性的,然后石子合并就没啥差别了

AC代码如下:
#include<bits/stdc++.h>
using namespace std;
const int maxn=2e2+10;
const int inf=0x3f3f3f3f;
const int mod=1e9;
int a[maxn],dp[maxn][maxn],n;
char b[maxn];
int main() {cin>>n;for(int i=1;i<=n;i++)   cin>>a[i],a[i+n]=a[i];for(int len=1;len<=n;len++){for(int i=1;i+len<2*n+1;i++){int end=i+len-1;for(int j=i;j<end;j++){dp[i][end]=max(dp[i][end],dp[i][j]+dp[j+1][end]+a[i]*a[j+1]*a[end+1]);}}}int ans=0;for(int i=1;i<=n;i++)ans=max(ans,dp[i][i+n-1]);cout<<ans<<endl;return 0;
}

320. 能量项链 (区间dp)相关推荐

  1. 洛谷 P1063 能量项链 区间dp

    洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...

  2. P1063 [NOIP2006 提高组] 能量项链 区间dp

    题目链接 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的 ...

  3. 能量项链--区间dp典例

    题目 思路 1.断环成链 2.区间大小枚举 3.区间起点枚举 4.区间的划分枚举 分析 1.可以采用处理环形问题的通用技巧,即复制一份接到后面.这里虽然输入是N个数,但实际上我们要求的是长N + 1的 ...

  4. AcWing 320. 能量项链(环形区间DP)

    AcWing 320. 能量项链(环形区间DP) 一. 问题: 二.分析: 三.代码 一. 问题: 二.分析: 在讲解这道题之前,大家需要对线性区间DP和环形区间DP有一定的了解,因此如果不会这两个知 ...

  5. AcWing 320. 能量项链

    AcWing 320. 能量项链 题意: 题解: 和环形石头合并基本一样 代码: #include<bits/stdc++.h> #define debug(a,b) printf(&qu ...

  6. 【ACWing】320. 能量项链

    题目地址: https://www.acwing.com/problem/content/322/ 在Mars星球上,每个Mars人都随身佩带着一串能量项链,在项链上有 N N N颗能量珠.能量珠是一 ...

  7. 区间DP(基础+提高)

    区间DP 1.区间dp的定义 2.石子合并 2.1 思路 2.2 时间复杂度分析 2.3 AC代码 3.环形石子合并 3.1思路 3.2 时间复杂度优化 3.3 AC代码 4.能量项链 4.1思路 4 ...

  8. 区间dp,绝对值不等式

    104. 货仓选址 在一条数轴上有 N 家商店,它们的坐标分别为 A1∼AN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求把货仓建在何处,可以使得货仓 ...

  9. SDNU 1178.能量项链(区间dp)

    Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠 ...

最新文章

  1. linux简单设计与实现代码,《linux内核设计与实现》第五章(示例代码)
  2. 调用face++平台api进行人脸识别
  3. 三维立体图_原来三维立体图片是这样制作的,学会以后自己也可以设计
  4. 各主流浏览器内核介绍
  5. mysql报4934_mysql-Mariadb语法错误1064(42000)
  6. 开源怎么保证专利_开源质量保证的基础
  7. 4.[attribute!=value]属性选择器
  8. AIX5.3安装oracle10g
  9. Java实现的日历(原创)
  10. Linux命令 查看端口占用情况
  11. HardwareRenderer EGL error: EGL_BAD_SURFACE
  12. kindeditor php 上传错误,kindeditor 上传图片失败,该怎么解决
  13. 葵花卫星数据介绍与下载教程
  14. android热补丁总结
  15. JVM深入学习(十六)-垃圾回收器的分类和性能指标
  16. element表格固定表头
  17. 直播代码Flutter 实现虎牙/斗鱼 弹幕效果
  18. 用python爬取豆瓣影评及影片信息(评论时间、用户ID、评论内容)
  19. android系统自动休眠代码流程,一种基于Android系统下的可控休眠方法及系统与流程...
  20. Java 获取鼠标点击坐标

热门文章

  1. 记录生产问题之Excel模板文件下载
  2. 将校验文件放置在根目录下
  3. alsa-lib和alsa-utils移植
  4. 让自定义的类型可以和任意的类型之间转换
  5. 【GDAL计算山体阴影时报错“Received a NULL pointer”解决办法】
  6. 微波雷达生命体征检测,人体呼吸心跳感应雷达模块,雷达传感器技术应用
  7. 网页域名在QQ内被多人投诉举报拦截的解决方案
  8. java mp3解析_java解析mp3工具
  9. 微信小程序--成语猜猜看
  10. windows电脑常识