题目描述

在MarsMars星球上,每个MarsMars人都随身佩带着一串能量项链。在项链上有NN颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是MarsMars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为mm,尾标记为rr,后一颗能量珠的头标记为r,尾标记为nn,则聚合后释放的能量为m \times r \times nm×r×n(MarsMars单位),新产生的珠子的头标记为mm,尾标记为nn。

需要时,MarsMars人就用吸盘夹住相邻的两颗珠子,通过聚合得到能量,直到项链上只剩下一颗珠子为止。显然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项链释放出的总能量最大。

例如:设N=4N=4,44颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10) (10,2)(2,3)(3,5)(5,10)(10,2)。我们用记号⊕表示两颗珠子的聚合操作,(jj⊕kk)表示第j,kj,k两颗珠子聚合后所释放的能量。则第44、11两颗珠子聚合后释放的能量为:

(44⊕11)=10 \times 2 \times 3=60=10×2×3=60。

这一串项链可以得到最优值的一个聚合顺序所释放的总能量为:

((44⊕11)⊕22)⊕33)=10 \times 2 \times 3+10 \times 3 \times 5+10 \times 5 \times 10=71010×2×3+10×3×5+10×5×10=710。

输入格式

第一行是一个正整数N(4≤N≤100)N(4≤N≤100),表示项链上珠子的个数。第二行是NN个用空格隔开的正整数,所有的数均不超过10001000。第ii个数为第ii颗珠子的头标记(1≤i≤N)(1≤i≤N),当i<Ni<N时,第ii颗珠子的尾标记应该等于第i+1i+1颗珠子的头标记。第NN颗珠子的尾标记应该等于第11颗珠子的头标记。

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

输出格式

一个正整数E(E≤2.1 \times (10)^9)E(E≤2.1×(10)9),为一个最优聚合顺序所释放的总能量。

输入输出样例

输入 #1复制

4
2 3 5 10

输出 #1复制

用f[i][j]表示i~j的区间中合并的最大值,用a数组储存能量,

本题的小技巧:在环形问题中,可以选择(i+1)%n的方式,但也可以将n个元素复制一遍,变成2*n个元素,简化代码。

代码:

#include<iostream>
#include<cstdio>
using namespace std;
int a[205],n;
int f[205][205];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{scanf("%d",&a[i]);a[n+i]=a[i];}//初始化
for(int i=2;i<=n+1;i++)
{
for(int l=1;i+l-1<=2*n;l++)//l表示区间最左端,r表示区间的最右端
{
int r=i+l-1;
for(int k=l+1;k<r;k++)//从区间长度为1开始,到区间长度为n的慢慢更新
f[l][r]=max(f[l][r],f[l][k]+f[k][r]+a[l]*a[k]*a[r]);
}
}
int ans=0;
for(int i =1 ; i <= n;i++) ans=max(ans,f[i][i+n]);//寻找最大值
printf("%d",ans);
}

转载于:https://www.cnblogs.com/Youio-bolg/p/11344240.html

Noip P1063 能量项链相关推荐

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

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

  2. P1063 能量项链

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

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

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

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

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

  5. 【动态规划】区间dp: P1063能量项链

    本题和合并石子果子一样,都是枚举最后一次合并的点 [动态规划笔记]区间dp:合并果子_m0_52043808的博客-CSDN博客 区别: 1.需要断环为链 2.每一堆石子变为两个值,这里用结构体实现 ...

  6. 洛谷 P1063 能量项链

    题目传送门 解题思路: 一道很模板的环形dp,要注意状态转移时串的头和尾到底是哪个. AC代码: 1 #include<cstdio> 2 #include<iostream> ...

  7. 【P1063】 能量项链

    之前一直在luogu博客上 2018年12月25日17:15:52     copy到博客园 P1063 能量项链 简单的区间dp 通过解决小区间来影响大区间 环形问题 存储的时候存两边 变成 2*N ...

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

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

  9. 能量项链(NOIP 2006 提高组)

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

最新文章

  1. Java设计模式之策略模式与状态模式
  2. dubbo服务者配置说明
  3. TF-IDF(term frequency–inverse document frequency)
  4. IT经理世界:专注莫如史玉柱
  5. MAC OS X 10.9.X下用命令行开启SSD trim的方法汇总
  6. 利用matlab做dsp实验,华工DSP实验一利用Matlab进行频谱分析
  7. 祥林嫂形容哪类人?祥林嫂比喻什么样的人物?
  8. iPhone手机投屏小米盒子
  9. 【转】ASP.NET AJAX入门系列(9):使用ScriptManager控件
  10. Illegal characters found in URL
  11. html缩放背景不缩放_如何在缩放通话中静音
  12. Windows美化之鼠标光标
  13. Zynq-Linux移植学习笔记之13-i2c驱动配置
  14. L1-061 新胖子公式 (10 分)C语言
  15. Windows下获取本地IP地址的两种方法
  16. org.apache.felix.http.jetty %bundles.pluginTitle: Cannot start (org.osgi.framework.BundleException:
  17. 保姆级/DOSBox使用MAC
  18. 【百度小程序模板】百度小程序模板怎么制作
  19. 【转载】《仙剑OL》主题曲_玩家版
  20. app如何添加广告位 uni_uniapp给全端小程序添加激励广告详细教程

热门文章

  1. 用友NC开发本地启动客户端时界面空白问题的解决
  2. JMX:Java程序监控的基石
  3. 荣耀magic5pro上手体验全面测评是智商税吗?
  4. 速看,微信这些功能你知道吗?
  5. Excel常用用特殊符号输入快捷键__2020.02.29
  6. 携手引领全球电竞消费升级:CGU现场七彩虹NVIDIA访谈
  7. 华为 Pocket S 折叠屏手机 评测
  8. <2021SC@SDUSC>开源游戏引擎Overload代码分析三(OvWindowing结束):OvWindowing——Dialogs
  9. Android 9.0 APP中显示导航栏的menu键
  10. Trunc函数日期取整