320. 能量项链 (区间dp)
传送门
描述
在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)相关推荐
- 洛谷 P1063 能量项链 区间dp
洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...
- P1063 [NOIP2006 提高组] 能量项链 区间dp
题目链接 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的 ...
- 能量项链--区间dp典例
题目 思路 1.断环成链 2.区间大小枚举 3.区间起点枚举 4.区间的划分枚举 分析 1.可以采用处理环形问题的通用技巧,即复制一份接到后面.这里虽然输入是N个数,但实际上我们要求的是长N + 1的 ...
- AcWing 320. 能量项链(环形区间DP)
AcWing 320. 能量项链(环形区间DP) 一. 问题: 二.分析: 三.代码 一. 问题: 二.分析: 在讲解这道题之前,大家需要对线性区间DP和环形区间DP有一定的了解,因此如果不会这两个知 ...
- AcWing 320. 能量项链
AcWing 320. 能量项链 题意: 题解: 和环形石头合并基本一样 代码: #include<bits/stdc++.h> #define debug(a,b) printf(&qu ...
- 【ACWing】320. 能量项链
题目地址: https://www.acwing.com/problem/content/322/ 在Mars星球上,每个Mars人都随身佩带着一串能量项链,在项链上有 N N N颗能量珠.能量珠是一 ...
- 区间DP(基础+提高)
区间DP 1.区间dp的定义 2.石子合并 2.1 思路 2.2 时间复杂度分析 2.3 AC代码 3.环形石子合并 3.1思路 3.2 时间复杂度优化 3.3 AC代码 4.能量项链 4.1思路 4 ...
- 区间dp,绝对值不等式
104. 货仓选址 在一条数轴上有 N 家商店,它们的坐标分别为 A1∼AN. 现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品. 为了提高效率,求把货仓建在何处,可以使得货仓 ...
- SDNU 1178.能量项链(区间dp)
Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠 ...
最新文章
- linux简单设计与实现代码,《linux内核设计与实现》第五章(示例代码)
- 调用face++平台api进行人脸识别
- 三维立体图_原来三维立体图片是这样制作的,学会以后自己也可以设计
- 各主流浏览器内核介绍
- mysql报4934_mysql-Mariadb语法错误1064(42000)
- 开源怎么保证专利_开源质量保证的基础
- 4.[attribute!=value]属性选择器
- AIX5.3安装oracle10g
- Java实现的日历(原创)
- Linux命令 查看端口占用情况
- HardwareRenderer EGL error: EGL_BAD_SURFACE
- kindeditor php 上传错误,kindeditor 上传图片失败,该怎么解决
- 葵花卫星数据介绍与下载教程
- android热补丁总结
- JVM深入学习(十六)-垃圾回收器的分类和性能指标
- element表格固定表头
- 直播代码Flutter 实现虎牙/斗鱼 弹幕效果
- 用python爬取豆瓣影评及影片信息(评论时间、用户ID、评论内容)
- android系统自动休眠代码流程,一种基于Android系统下的可控休眠方法及系统与流程...
- Java 获取鼠标点击坐标