题目:能量项链 rqnoj5

题目描述

  在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m*r*n(Mars单位),新产生的珠子的头标记为m,尾标记为n。
需要时,Mars人就用吸盘夹住相邻的两颗珠子,通过聚合得到能量,直到项链上只剩下一颗珠子为止。显然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项链释放出的总能量最大。
例如:设N=4,4颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10) (10,2)。我们用记号⊕表示两颗珠子的聚合操作,(j⊕k)表示第j,k两颗珠子聚合后所释放的能量。则第4、1两颗珠子聚合后释放的能量为:
(4⊕1)=10*2*3=60。
这一串项链可以得到最优值的一个聚合顺序所释放的总能量为
((4⊕1)⊕2)⊕3)=10*2*3+10*3*5+10*5*10=710。

输入格式

  输入文件的第一行是一个正整数N(4≤N≤100),表示项链上珠子的个数。第二行是N个用空格隔开的正整数,所有的数均不超过1000。第i个数为第i颗珠子的头标记(1≤i≤N),当1≤i<N时,第i颗珠子的尾标记应该等于第i+1颗珠子的头标记。第N颗珠子的尾标记应该等于第1颗珠子的头标记。
至于珠子的顺序,你可以这样确定:将项链放到桌面上,不要出现交叉,随意指定第一颗珠子,然后按顺时针方向确定其他珠子的顺序。

输出格式

  输出文件只有一行,是一个正整数E(E≤2.1*10^9),为一个最优聚合顺序所释放的总能量。

样例输入

4 2 3 5 10

样例输出

710

这一题跟石子合并那一题很像http://www.cnblogs.com/oijzh/archive/2012/08/19/2646578.html,所以思路就不说了,这里给出C++ Code

#include<cstdio>
#define MAXN 110int n,a[MAXN*2],f[MAXN*2][MAXN*2];int getsum(int l,int r)
{if(r-l+1<2)return 0;if(r-l+1==2) return (a[l]*a[r]*a[r+1]);if(f[l][r]!=0)return f[l][r];for(int j=l+1;j<=r;j++)f[l][r]>?=getsum(l,j-1)+getsum(j,r)+a[l]*a[j]*a[r+1];//区间      l..........(j-1).j..................rreturn f[l][r];                                         //分成       |<------------->|<------------------>|
}                                                           //新区间为        l..(j-1)            j..r//即          (l,l+1)..(j-1,j) 和 (j,j+1)..(r,r+1)     注意最后是r+1 !!
int main()
{freopen("energy.in","r",stdin);freopen("energy.out","w",stdout);scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i+n]=a[i];}int best=0;for(int i=1;i<=n;i++)best>?=getsum(i,i+n-1);printf("%d",best);
}

转载于:https://www.cnblogs.com/oijzh/archive/2012/08/19/2646581.html

【区间动规】【记忆化搜索】能量项链相关推荐

  1. 「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索

    ->戳我进原题 [HAOI2008]玩具取名 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2486 Solved: 1448 Descript ...

  2. c++ 记忆化搜索_2010/12区间动态规划及记忆化搜索

    相关发表文章:2012/12由怎样画马谈培养动漫课程教师的专业素养2012/0708通达网络中可信的n%谈网络批判性思维的养成2011/1516信息学奥赛大家谈2008/02解读高中信息技术教学理念中 ...

  3. 蓝桥杯 乘积最大(区间dp+记忆化搜索)

    问题描述 今年是国际数学联盟确定的"2000--世界数学年",又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一 ...

  4. Palindrome subsequence HDU - 4632 区间dp|记忆化搜索

    // 区间dp import java.util.Scanner;/**** @author CN*/ public class main {static int mod = 10007;static ...

  5. Codeforces 1293 E. Xenon‘s Attack on the Gangs —— 树上记忆化搜索,单点加改成区间加,有丶东西

    This way 题意: 现在有一棵大小为n的树,你要往边上放0~n-2这n-1个数,定义mex(u,v)表示u到v路径上的第一个未出现的自然数,定义S 问你S最大是多少. 题解: 我感觉这道题绝不止 ...

  6. 动态规划:记忆化搜索

    记忆化搜索和递推都是为了解决子问题重复计算而产生的 虽然动态规划的转移图是一个DAG,但是一个状态可以被其他的状态复用多次 因此为了提高动态规划的效率,记忆化搜索便产生了 但是有时候,状态转移图是不容 ...

  7. NYOJ 304 节能【记忆化搜索】

    节能 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 Dr.Kong设计的机器人卡多越来越聪明.最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关掉ZK大道右侧 ...

  8. 收集宝石 [记忆化搜索]

    收集宝石 [记忆化搜索] 问题描述 何老板最近在玩一款收集宝石的手游.游戏虽然简单,但他仍然乐此不疲. 游戏中,有30001个小岛排成一条直线,小岛从左往右编号0到30000,相邻岛屿间距为1. 有n ...

  9. 动态规划入门——记忆化搜索

    文章目录 记忆化搜索 1.数塔问题 2.滑雪 总结 记忆化搜索 1.数塔问题 [动规:递归求解] 递推方程: 不难发现,最后一层的点到最后一层的最大距离即为自己对应的值a[n - 1][y],这个就是 ...

  10. [P1434 [SHOI2002]滑雪](DFS,记忆化搜索)

    P1434 [SHOI2002]滑雪 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你 ...

最新文章

  1. Caffe + windows + python3.5安装
  2. 图解Sqlite教程2
  3. Java对象克隆方法(浅克隆、深克隆)
  4. epoll nio区别_【总结】两种 NIO 实现:Selector 与 Epoll
  5. mysql 检查列是否存在,如何检查mysql表列是否存在?
  6. Eclipse卸载插件SpringSoource-tool-suite
  7. 15.MongoDB的一致性(读关注与写关注)
  8. HDU 4417 划分树写法
  9. go语言中金币分配训练--pm
  10. html导出excel设置宽度,导出excel图片如何把大小控制
  11. Zipkin jar 下载地址
  12. 【Unity】制作简单的启动、菜单和游戏界面
  13. 关于使用https请求微信乱码问题
  14. UG NX 12 同步建模技术
  15. 最好的开源App锦集
  16. 大漠找图算法_大漠找图怎么实现用资源表图片找的?(不用写出的方法)
  17. 【Chapter 3: Process】
  18. JAVA微信登陆详解
  19. 电脑默认按住了ctrl键的解决办法
  20. ffmpeg对mpeg2-TS解析的最详细分析 ffmpeg

热门文章

  1. (python)班级身高排序
  2. PS多个版本免费本地高速下载(包含2021)
  3. python+stata
  4. 十、roswtf错误检查工具入门(ROS)
  5. Chrome添加调试机型
  6. 基于FileZilla Server文件服务器配置且支持公网解决方案
  7. 程序员市场饱和了吗?未来5年前景如何?工资会下降么?
  8. 缘分天空之Mybatis学习
  9. 171122之PLSQL的使用教程
  10. ubuntu 18.04 server安装CIAO时出现ds9错误的解决办法