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)相关推荐

  1. 320. 能量项链 (区间dp)

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

  2. AcWing 320. 能量项链

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

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

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

  4. [蓝桥杯][算法提高]能量项链(区间dp)

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

  5. 石子合并/能量项链【区间dp】

    题目链接:http://www.51mxd.cn/problem.php-pid=737.htm 题目大意:给出n个石子堆以及这n个石子堆中石子数目,每次操作合并两个相邻的石子堆,代价为两个石子堆数目 ...

  6. 能量项链(区间DP)

    传送门:能量项链 思路:与环形石子合并问题相似,可以把环形的问题转化成线形的问题,所以考虑线形的怎么做 状态表示:f[i][j]表示第i个数到第j个数所能产生的能量的最大值 状态转移方程:f[i][j ...

  7. 能量项链【区间dp】

    题目来自洛谷试炼场-普及组-更要技巧的动规与记忆化 题目链接https://www.luogu.org/problem/P1063 题目的大致意思就是让N个珠子合在一起,要求释放的能量最大.规则是:例 ...

  8. 蓝桥杯 能量项链 (区间dp)

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

  9. 【每日DP】day12、P1063 能量项链(区间DP又一模板,震惊,只需要4行代码?)难度⭐⭐⭐

    P1063 能量项链 本题(NOIP2006)和石子合并(NOI1999)几乎一模一样 垃圾NOIP抄袭NOI,手动狗头 但是还是有细微的区别的,首先你得先能看懂题,石子合并是N堆石子,是i−ki-k ...

最新文章

  1. 为什么我的子线程更新了 UI 没报错?借此,纠正一些Android 程序员的一个知识误区...
  2. Source Insight技巧收集
  3. ClientScript.RegisterClientScriptBlock 不执行
  4. 昨天终于收到《.Net Web服务编程》
  5. OPA 17 - searchField.setValue
  6. 给你的网页添加随机BGM背景音乐
  7. django-动漫节目列表,后台的操作
  8. python tuple类型和list_Python 入门(四)List和Tuple类型
  9. 传输请求时报信息对象0REQ_CDATE不存在
  10. win10下cuda、cudnn、c++的cuda环境(build tool of Visual Studio 2019)、anaconda的pytorch-gpu环境、gcc编译环境
  11. 操作系统–银行家算法c语言代码
  12. linux系统计时,关于linux:计算机系统中的计时机制
  13. Linux小知识--通过MAC地址查询厂家OUI(成功率很高)
  14. matlab 外接圆,【外接圆matlab知道三个顶点的坐标,如何求这三个顶点组成的三角形外接圆的半径与圆心坐标?】作业帮...
  15. 在线电子书阅读微信小程序 毕业设计(4)图书详细页-图书目录
  16. 如何在邮件正文中贴简历里
  17. List 列表的用法
  18. 衬线字体和无衬线字体区别_字体,字体和字体系列有什么区别?
  19. [转贴]内核版之OS设计
  20. C#1309. 解码字母到整数映射

热门文章

  1. Cache地址映射与变换方法
  2. 巧用60分钟k线战法把握卖点
  3. Java程序员职业生涯规划完整版:从程序员到CTO
  4. 计算x-x/2+x/3-x/4+...+x/99-x/100+...,直到最后一项的绝对值小于0.00001为止
  5. 2016年魅族Java研发面试总结
  6. 一文教会你风格迁移CycleGAN从入门到高阶再到最终成功魔改(附成功魔改代码)
  7. 怎样配置Java开发环境?步骤详解
  8. [JZOJ4566]reimu hakurei
  9. 2025年前装搭载率突破30%,资本/车企持续加码新赛道
  10. mongo按季度统计_小米三季度全球手机出货量达4660万部,超五成收入来自境外