洛谷P1063 能量项链
区间DP
题目传送门
算是比较经典的一道题了。因为它是个环,所以我们要把原来的数组*2。
f[l][r]f[l][r]表示把[l,r][l,r]内的能量珠进行合并能取得的能量最大值。
那么就有如下转移方程:
f[l][r]=max(f[l][r],a[l]*a[i+1]*a[r+1]+f[l][i]+f[i+1][r]
因为两个数字才是一个能量珠,因此ii和rr都要+1才能表示一个完整的能量珠。
每个珠子都要枚举一遍,记忆化搜索即可。
因为是环,注意把答案/2。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
#define MAXN 1000
typedef long long LL;//答案不/2的时候可能会超出int的范围
using namespace std;
int n;
int w[MAXN+5];
LL f[MAXN+5][MAXN+5];
LL dp(int l,int r){//记忆化搜索if (f[l][r]) return f[l][r];if (r-l==1) return f[l][r]=(LL)w[l]*w[r]*w[r+1];for (int i=l;i<r;i++)f[l][r]=max(f[l][r],(LL)w[l]*w[i+1]*w[r+1]+dp(l,i)+dp(i+1,r));return f[l][r];
}
int main(){scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d",&w[i]);w[n+i]=w[i];//接环}w[2*n+1]=w[1];LL ans=0;for (int i=1;i<=n;i++)ans=(LL)max(ans,dp(1,i+n-1));//枚举printf("%d\n",ans/2);return 0;
}
洛谷P1063 能量项链相关推荐
- 洛谷 P1063 能量项链 区间dp
洛谷 P1063 题意:在一串项链中,是环状的,第 i 颗珠子有两个能量a[i]和a[i+1],第i+1颗珠子有两个能量a[i+1]和a[i+2],可以合并两个珠子,得到a[i]*a[i+1]*a[i ...
- 洛谷 P1063 能量项链
题目传送门 解题思路: 一道很模板的环形dp,要注意状态转移时串的头和尾到底是哪个. AC代码: 1 #include<cstdio> 2 #include<iostream> ...
- 【每日DP】day12、P1063 能量项链(区间DP又一模板,震惊,只需要4行代码?)难度⭐⭐⭐
P1063 能量项链 本题(NOIP2006)和石子合并(NOI1999)几乎一模一样 垃圾NOIP抄袭NOI,手动狗头 但是还是有细微的区别的,首先你得先能看懂题,石子合并是N堆石子,是i−ki-k ...
- P1063 能量项链
P1063 能量项链 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子, ...
- Noip P1063 能量项链
题目描述 在MarsMars星球上,每个MarsMars人都随身佩带着一串能量项链.在项链上有NN颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一 ...
- P1063 能量项链(C++_区间dp)
题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...
- 洛谷 P1063 [NOIP2006 提高组] 能量项链
本题应通过演算过程发现最终问题的解决可由两个相同规模较小的问题轻松地转化过来.(一般分治时只分成两个简化程序) 用f[i][j]表示以a[i]开头a[j]结尾的数串的最大和,如k为i,j之间任一节点, ...
- 【动态规划】区间dp: P1063能量项链
本题和合并石子果子一样,都是枚举最后一次合并的点 [动态规划笔记]区间dp:合并果子_m0_52043808的博客-CSDN博客 区别: 1.需要断环为链 2.每一堆石子变为两个值,这里用结构体实现 ...
- 洛谷 深基 第4部分 基础数学与数论(19-21课)
洛谷 深基 第4部分 基础数学与数论 第19章 位运算与进制转换 P1143 进制转换 https://www.luogu.com.cn/problem/P1143 洛谷P1143 进制转换的Pyt ...
- 【P1063】 能量项链
之前一直在luogu博客上 2018年12月25日17:15:52 copy到博客园 P1063 能量项链 简单的区间dp 通过解决小区间来影响大区间 环形问题 存储的时候存两边 变成 2*N ...
最新文章
- Linux 实时流量监测(iptraf中文图解)
- robot向linux发送命令,linux发送手机短信 利用fesion robot
- linux agetty 登录框进程简介
- epoll的总结 LT和ET使用EPOLLONESHOT
- 025_JDK的hashCode方法
- 怪物行为树案例_Behavior Designer行为树(简单实现巡逻)
- php显示动态通告信息方式,Joomla PHP通知,警告和错误指南
- java实现18位校验
- 济南大学计算机二级成绩查询,济南大学泉城学院教务系统成绩查询登录入口 jwxt.ujnpl.com/jwglxt/,精英高考网...
- JavaScript继承理解:ES5继承方式+ES6Class继承对比
- url去重:布隆过滤器-python实现
- 单机配置tomcat 8 集群
- Windows下运行linux桌面程序
- 「Python海龟画图」利用海龟画笔绘制谢尔宾斯基三角形
- java lua脚本_在Java中使用Lua脚本语言
- nginx: [warn] conflicting server name “xxx“ on 0.0.0.0:80解决
- 微信小程序开发笔记二(WXSS和CSS样式美化)
- 上线了新版在线GIF压缩功能,支持指定压缩大小
- Wps文档如何转换为pdf文件
- 计算机编号怎么学,英文的一二三四编号电脑怎么打出来