以区间DP为前提的【洛谷p1063】能量项链
(跑去练习区间DP,然后从上午拖到下午qwq)
然后这道题也是典型的区间DP。因为是项链,所以显然是一个环,然后我们可以仿照石子合并一样,把一个有n个节点的环延长成为有2*n个节点的链。然后注意最后一个节点2*n的尾标记=第一个节点的头标记;
然后按照区间DP的常规操作:枚举区间长度,这里我枚举的是将几个能量珠聚合在了一起;
然后枚举左端点:同时保证右端点不会超出2*n的范围;
定义右端点:j=i+num-1;
接下来枚举断点;
枚举断点比较关键,断点枚举要从i~j-1,(咱也不知道为啥咱也想不明白,总之当k=j时会重复计算f[i][j])
转移方程:f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+head[i]*tail[k]*tail[j]);
因为这里是先将第1~k堆石子合并为1堆,再将k+1~j堆石子合并为1堆,因此将i~j合并时,现在的两颗珠子:
,所以+head[i]*tail[k]*tail[j];
然后最后还是枚举(相当于枚举以哪个点为断点),求最大值;
CODE:
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int ans=;
char last=' ',ch=getchar();
while(ch>''||ch<'') last=ch,ch=getchar();
while(ch>=''&&ch<='') ans=(ans<<)+(ans<<)+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
}
int n;
int head[],tail[];
int f[][];
int main(){
n=read();
for(int i=;i<=n;i++)
head[i]=read(),head[i+n]=head[i];
for(int i=;i<=*n-;i++)
tail[i]=head[i+];
tail[*n]=head[];
for(int num=;num<=n;num++){
for(int i=;i+num-<=*n;i++){
int j=i+num-;
for(int k=i;k<=j-;k++)
f[i][j]=max(f[i][j],f[i][k]+f[k+][j]+head[i]*tail[k]*tail[j]);
}
}
int ans=;
for(int i=;i<=n;i++) ans=max(ans,f[i][i+n-]);
cout<<ans<<endl;
return ;
}
end-
以区间DP为前提的【洛谷p1063】能量项链的更多相关文章
- 『题解』洛谷P1063 能量项链
原文地址 Problem Portal Portal1:Luogu Portal2:LibreOJ Portal3:Vijos Description 在\(Mars\)星球上,每个\(Mars\)人 ...
- 洛谷P1063 能量项链(区间DP)(环形DP)
To 洛谷.1063 能量项链 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的 ...
- 洛谷——P1063 能量项链
P1063 能量项链 题目描述 在MarsMars星球上,每个MarsMars人都随身佩带着一串能量项链.在项链上有NN颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对 ...
- 洛谷 P1063 能量项链 题解
P1063 能量项链 题目描述 在\(Mars\)星球上,每个\(Mars\)人都随身佩带着一串能量项链.在项链上有\(N\)颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并 ...
- 洛谷P1063 能量项链 [2006NOIP提高组]
P1063 能量项链 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标 记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子 ...
- 洛谷P1063能量项链(区间dp)
题目描述: 给定一串序列x[],其中的每一个Xi看作看作一颗珠子,每个珠子包含两个参数,head和tail,前一颗的tail值是后一个的head值,珠子呈现环形(是一条项链),所以最后一颗的tail是 ...
- 洛谷 P1063 能量项链(区间DP)
嗯... 题目链接:https://www.luogu.com.cn/problem/P1063 这道题首先要读懂题目,然后往上套区间dp,要转换成链式. AC代码: #include<cstd ...
- 洛谷P1063能量项链题解
$题目$ 不得不说,最近我特别爱刷这种区间DP题,因为这个跟其他的DP有些不一样的地方,主要是有一定的套路,就是通过小区间的状态更新大区间,从而得到原题给定区间的最优解. $但是$ 这个题应该跟$石子 ...
- [NOIP2006] 提高组 洛谷P1063 能量项链
题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...
- 洛谷 P1063 能量项链
题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...
随机推荐
- vscode-函数注释插件-正则插件
1.安装插件KoroFileHeader(函数标准注释) 2.设置 在vscode左下角点击设置按钮,选择“设置”,然后输入“fileheader”, 文件头部注释:Fileheader:custom ...
- mysql的安装和简单的操作
一.MySQL的安装和简单操作 1.了解MySQL MySQL有两个软件 ---服务器软件 - socket服务端 - 本地文件操作 - 解析指令(mysql语句)---客户端软件 ...
- 2016.5.21【初中部 NOIP提高组】模拟赛A 总结
这次比赛的题目看上去好像不难,但当开始仔细想的时候才发现,并没有那么简单. T1旅行:刚开始看到k<=4的时候还以为有题可以AC了,不过呢,还是毫无思路. T3Pty爬山:雨天的尾巴最近打了几道 ...
- shimo
shimo破解需要同意安装允许各个端安装
- LeetCode 1143 最长公共子序列
链接:https://leetcode-cn.com/problems/longest-common-subsequence 给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序 ...
- RN组件的生命周期
来自:http://www.devio.org/tags/#React%20Native
- VUE环境搭建,项目配置(Windows下)
公司想做官网,框架我自己定,然后就选了vue,那现在就来加深一遍vue的环境的搭建吧 1.安装node.js,这里就不再多说了,很简单,如果之前有安装就不用再安装了,可node -v查看node版本 ...
- AutoCAD2008换硬盘后重新激活
1.打开“C:\Documents and Settings\All Users\Application Data\Autodesk\Software Licenses”,删除文件夹里面的所有*.da ...
- [CSP-S模拟测试]:玩具(概率DP)
题目描述 这个故事发生在很久以前,在$IcePrincess\text{_}1968$和$IcePrince\text{_}1968$都还在上幼儿园的时候. $IcePrince\text{_}196 ...
- Ecipse代码调试
1.设置断点 2.启动调试 在代码空白处中右击,选择Debug as —>1 Java Application 快捷键 表示当前实现继续运行直到下一个断点,快捷键为F8. 表示打断整个进程 表示 ...