AcWing 320. 能量项链(环形区间DP)
AcWing 320. 能量项链(环形区间DP)
- 一、 问题:
- 二、分析:
- 三、代码
一、 问题:
二、分析:
在讲解这道题之前,大家需要对线性区间DP和环形区间DP有一定的了解,因此如果不会这两个知识点的话,作者建议先去看一下作者之前写过的两篇文章:石子合并(分治+贪心+DP+前缀和)和AcWing 1068. 环形石子合并(环形区间DP)
在对这两个知识点都有了详细地了解之后,我们发现这道题唯一的区别就在于合并两堆石子的时候,吸收能量的方式并不是简单地相加。
除此以外和环形的区间DP是没有区别的。
而这道题的合并方式可以画成下面这个图的样子:
那么对于一个环上的能量而言,最终合并的效果又是什么样的呢?
根据合并的方式我们可以映射到我们的转移方程之中,通过和之前两篇文章中的转移方程进行对比,我们发现,这个转移方程有两处不同,一处是由于能量吸收方式造成的最后一项所加的数不再是前缀和,另外一个是我们之前的k和k+1,但是这里是两个k。
那么除了转移方程的不同,还有什么不同呢?
我们接着看:
那么转化成最终的序列A,B,C,D对吗?
如果这么表示的话,假设我们还是提前将A和B合并,C和D合并,那么最终合并这两大堆的时候,就成了A * C * D了。因此,我们需要将两个A拆出一个放在末尾。
这么表示的话,我们才能够代表环。
所以此时我们就需要去计算长度为n + 1的序列。
那么环变成链的方式和之前所提到的两篇文章中所写的一样,将两个序列拼在一起。
三、代码
#include<bits/stdc++.h>
using namespace std;
const int N = 210;
int f[N][N];
int a[N];
int main()
{int n;cin >> n;for(int i = 0; i < n; i ++ ){cin >> a[i];a[i + n] = a[i];}for(int len = 3; len <= n + 1; len ++ ){for(int l = 0; l + len - 1 < 2 * n; l ++ ){int r = l + len - 1;for(int k = l + 1; k < r; k ++ ){f[l][r] = max(f[l][r], f[l][k] + f[k][r] + a[l] * a[k] * a[r]);}}}int maxv = 0;for(int i = 0; i + n + 1 - 1 < 2 * n; i ++ ){int r = i + n + 1 -1;if(maxv < f[i][r])maxv = f[i][r];}cout << maxv << endl;return 0;
}
AcWing 320. 能量项链(环形区间DP)相关推荐
- 320. 能量项链 (区间dp)
传送门 描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链,在项链上有 N 颗能量珠. 能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数. 并且,对于相邻的两颗珠子,前一颗珠子 ...
- AcWing 320. 能量项链
AcWing 320. 能量项链 题意: 题解: 和环形石头合并基本一样 代码: #include<bits/stdc++.h> #define debug(a,b) printf(&qu ...
- SDNU 1178.能量项链(区间dp)
Description 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠 ...
- [蓝桥杯][算法提高]能量项链(区间dp)
题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有 N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一 ...
- 石子合并/能量项链【区间dp】
题目链接:http://www.51mxd.cn/problem.php-pid=737.htm 题目大意:给出n个石子堆以及这n个石子堆中石子数目,每次操作合并两个相邻的石子堆,代价为两个石子堆数目 ...
- 能量项链(区间DP)
传送门:能量项链 思路:与环形石子合并问题相似,可以把环形的问题转化成线形的问题,所以考虑线形的怎么做 状态表示:f[i][j]表示第i个数到第j个数所能产生的能量的最大值 状态转移方程:f[i][j ...
- 能量项链【区间dp】
题目来自洛谷试炼场-普及组-更要技巧的动规与记忆化 题目链接https://www.luogu.org/problem/P1063 题目的大致意思就是让N个珠子合在一起,要求释放的能量最大.规则是:例 ...
- 蓝桥杯 能量项链 (区间dp)
问题描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...
- 【每日DP】day12、P1063 能量项链(区间DP又一模板,震惊,只需要4行代码?)难度⭐⭐⭐
P1063 能量项链 本题(NOIP2006)和石子合并(NOI1999)几乎一模一样 垃圾NOIP抄袭NOI,手动狗头 但是还是有细微的区别的,首先你得先能看懂题,石子合并是N堆石子,是i−ki-k ...
最新文章
- 为什么我的子线程更新了 UI 没报错?借此,纠正一些Android 程序员的一个知识误区...
- Source Insight技巧收集
- ClientScript.RegisterClientScriptBlock 不执行
- 昨天终于收到《.Net Web服务编程》
- OPA 17 - searchField.setValue
- 给你的网页添加随机BGM背景音乐
- django-动漫节目列表,后台的操作
- python tuple类型和list_Python 入门(四)List和Tuple类型
- 传输请求时报信息对象0REQ_CDATE不存在
- win10下cuda、cudnn、c++的cuda环境(build tool of Visual Studio 2019)、anaconda的pytorch-gpu环境、gcc编译环境
- 操作系统–银行家算法c语言代码
- linux系统计时,关于linux:计算机系统中的计时机制
- Linux小知识--通过MAC地址查询厂家OUI(成功率很高)
- matlab 外接圆,【外接圆matlab知道三个顶点的坐标,如何求这三个顶点组成的三角形外接圆的半径与圆心坐标?】作业帮...
- 在线电子书阅读微信小程序 毕业设计(4)图书详细页-图书目录
- 如何在邮件正文中贴简历里
- List 列表的用法
- 衬线字体和无衬线字体区别_字体,字体和字体系列有什么区别?
- [转贴]内核版之OS设计
- C#1309. 解码字母到整数映射
热门文章
- Cache地址映射与变换方法
- 巧用60分钟k线战法把握卖点
- Java程序员职业生涯规划完整版:从程序员到CTO
- 计算x-x/2+x/3-x/4+...+x/99-x/100+...,直到最后一项的绝对值小于0.00001为止
- 2016年魅族Java研发面试总结
- 一文教会你风格迁移CycleGAN从入门到高阶再到最终成功魔改(附成功魔改代码)
- 怎样配置Java开发环境?步骤详解
- [JZOJ4566]reimu hakurei
- 2025年前装搭载率突破30%,资本/车企持续加码新赛道
- mongo按季度统计_小米三季度全球手机出货量达4660万部,超五成收入来自境外