题目
思路
1.断环成链
2.区间大小枚举
3.区间起点枚举
4.区间的划分枚举
分析
1.可以采用处理环形问题的通用技巧,即复制一份接到后面。这里虽然输入是N个数,但实际上我们要求的是长N + 1的区间的最大能量,所以要将这N个数重复一遍拼在后面,形成长2 N的数组,这样就转化为了线性问题

2.用dp[l][r]来代表区间(l,r)内所有珠子合成的这一颗能量珠所可能释放的最大能量。在区间( l , r )内,能量珠dp[l][r]的头标记为 a[ l ],尾标记为 a[ r+1 ] 用k将区间分成 l~k 和 k+1~r 左右两个部分来代表分左右子珠: dp[l][k]为左子珠所可能产生的最大能量 dp[k+1][r]为右子珠所可能产生的最大能量 k为左子珠的尾标记,k+1为右子珠的头标记
将最初能量珠的数据存到数组w中, 则第 l 颗能量珠的头标记为w[ l ],尾标记为w[ l + 1 ],合并珠子即合并左珠dp[l][k]和右珠dp[k+1][r],释放能量a[l]∗a[k+1]∗a[r+1]

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll maxn = 1e3 + 5;
const ll MOD = 1e9 + 7;
const ll INF = 0x7fffffff;
ll n;
ll w[maxn];
ll dp[maxn][maxn];
int main() {ios_base::sync_with_stdio(false), cin.tie(0);cin >> n;for (ll i = 1; i <= n; i++) {cin >> w[i];w[i + n] = w[i];}for (ll len = 1; len < n; len++) {for (ll l = 1; l + len <= 2 * n; l++) {ll r = l + len ;for (ll k = l; k < r; k++) {dp[l][r] = max(dp[l][r], dp[l][k] + dp[k + 1][r] + w[l] * w[k + 1] * w[r + 1]);}}}ll res = 0;for (ll i = 1; i <= n; i++) res = max(res, dp[i][i + n-1]);cout << res;return 0;
}

能量项链--区间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)

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

  4. 能量项链【区间dp】

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

  5. P1063 能量项链(C++_区间dp)

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

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

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

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

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

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

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

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

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

最新文章

  1. python3.8安装pygame_Python3.8安装Pygame教程步骤详解
  2. xgboost使用自定义的loss function
  3. 开发机多用户 xdebug 远程调试 PhpStorm
  4. 防止Linux库so中的接口冲突
  5. bson json c语言,对比平台--JSON和BSON之间的区别
  6. vector中删除元素后,如何有效的释放无效元素的内存
  7. Myeclipse修改设置Default VM Arguments
  8. 几个你可能不了解的CSS单位
  9. 1-22 在“终端”里,运行“top”命令
  10. centos mysql 安装_Linux下MYSQL5.7详细安装步骤:
  11. Vicdas实时历史数据库
  12. sodp软件如何导入多个工作面信息_如何批量导入数据到手机通讯录
  13. Redis集群原理详解
  14. matlab中的semilogy,MATLAB 函数Semilogy()
  15. VB程序启动后如何在通知区域显示
  16. SDH(标准DH)和MDH(改进DH)
  17. CIE 国际照明委员会
  18. outlook中抄送操作和163撤回邮件
  19. MOOC清华《面向对象程序设计》第9章:听课感想
  20. CentOS7部署网盘网站

热门文章

  1. 常见Android屏幕分辨率以及对应机型
  2. 中国Java之父张孝祥去世------给it人士的思考
  3. Project Anarchy 概要-转
  4. MFC获取应用程序所在目录--CString(Left、Right、Find、ReverseFind)--Cstring与char或wchar转换
  5. java list的contains,list的contains方法
  6. 光盘修复暴利项目笔记:为你拆解这个大热门的光盘修复赚钱项目
  7. Urllib2 相关总结及异常返回值含义
  8. MySQL字符集utf8mb4与utf8的区别
  9. Hugging Face 预训练模型的快速下载方法
  10. Python实现SVM算法