洛谷 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]的能量,这两个珠子合并成a[i]和a[i+2]的新珠子,问通过合理的操作,能得到的最大的能量。

 

思路:区间dp,首先环状的变成链状的,要把区间翻倍复制,枚举左右端点和每个区间的分界点,得到结果。注意,要先从小到大枚举右端点。

当然也可以开用最外层枚举区间长度得方法。

 

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <list>
#include <cstdlib>
#include <iterator>
#include <cmath>
#include <iomanip>
#include <bitset>
#include <cctype>
using namespace std;
//#pragma comment(linker, "/STACK:102400000,102400000")  //c++
#define lson (l , mid , rt << 1)
#define rson (mid + 1 , r , rt << 1 | 1)
#define debug(x) cerr << #x << " = " << x << "\n";
#define pb push_back
#define pq priority_queuetypedef long long ll;
typedef unsigned long long ull;typedef pair<ll ,ll > pll;
typedef pair<int ,int > pii;//priority_queue<int> q;//这是一个大根堆q
//priority_queue<int,vector<int>,greater<int> >q;//这是一个小根堆q
#define fi first
#define se second
//#define endl '\n'#define OKC ios::sync_with_stdio(false);cin.tie(0)
#define FT(A,B,C) for(int A=B;A <= C;++A)  //用来压行
#define REP(i , j , k)  for(int i = j ; i <  k ; ++i)
//priority_queue<int ,vector<int>, greater<int> >que;const ll mos = 0x7FFFFFFF;  //2147483647
const ll nmos = 0x80000000;  //-2147483648
const int inf = 0x3f3f3f3f;
const ll inff = 0x3f3f3f3f3f3f3f3f; //18
const double PI=acos(-1.0);template<typename T>
inline T read(T&x){x=0;int f=0;char ch=getchar();while (ch<'0'||ch>'9') f|=(ch=='-'),ch=getchar();while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x=f?-x:x;
}
// #define _DEBUG;         //*//
#ifdef _DEBUG
freopen("input", "r", stdin);
// freopen("output.txt", "w", stdout);
#endif
/*-----------------------show time----------------------*/const int maxn = 109;int n;int a[maxn*2];int dp[maxn*2][maxn*2];
int main(){    OKC;cin>>n;for(int i=1; i<=n; i++){cin>>a[i];a[i+n] = a[i];}int ans = 0;for(int ri=1; ri<=2*n-1; ri++){for(int le=ri-1; ri-le+1 <=n&&le>=1; le--){for(int k=le; k<ri; k++){dp[le][ri] = max(dp[le][ri] , dp[le][k] + dp[k+1][ri] + a[le]*a[k+1]*a[ri+1]);ans = max(ans, dp[le][ri]);}}}cout<<ans<<endl;return 0;
}
洛谷 P1063

 

转载于:https://www.cnblogs.com/ckxkexing/p/9435767.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/413597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支付宝第三方授权登陆

支付宝微信第三方软件的接入&#xff0c;也是越来越流行&#xff0c;最近也稍微研究了一下&#xff0c;支付宝和微信的登陆接入。 由于本人是做Java后台发开的&#xff0c;所以前端app集成没有涉及&#xff0c;研究的是网页和后台部分。 做第三方软件的​接入&#xff0c;…

[css] H5如何禁止显示系统菜单?

[css] H5如何禁止显示系统菜单&#xff1f; touch-callout:none; user-select:none;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

[css] 如何让表格单元格等宽显示

[css] 如何让表格单元格等宽显示 table-layout: fixed; width: 100%;个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

解决IntelliJ创建Maven项目一直显Loading archetype list

最近在使用idea的过程中&#xff0c;创建maven项目&#xff0c;一直会遇到这个问题&#xff0c;查了很多资料&#xff0c;最终解决啦。 网上普遍存在两种方式 但是我是用第三种方式解决的..... 首先&#xff0c;说说前两种方式&#xff0c; 1.删除{User_Home}/.IntelliJIdea{V…

flex布局-笔记

一 、flex布局 弹性布局&#xff0c;灵活性 .box{display: flex;display: -webkit-flex; /* Webkit内核的浏览器&#xff0c;必须加上-webkit前缀。 */ /* 行内元素也可以使用弹性布局。 display: inline-flex;*/ /*弹性布局后&#xff0c;子元素的float、clear和vertical-ali…

[css] 固定的外框尺寸,里面的图片尺寸不固定,如何让图像自适应外框呢?

[css] 固定的外框尺寸&#xff0c;里面的图片尺寸不固定&#xff0c;如何让图像自适应外框呢&#xff1f; 使用 object-fit &#xff0c;用法类似background-size&#xff0c;可选的值&#xff1a;cover、contain、fill等个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后…

idea创建springboot项目出现的问题

当启动一个不连接数据库的springboot时&#xff0c;会报错 Cannot determine embedded database driver class for database type NONE 是因为springboot在启动时&#xff0c;会扫描DataSource相关配置的包所以SpringBootApplication(exclude {DataSourceAutoConfiguration.c…

【EasyNetQ】- 发送接收

发布/订阅和请求/响应模式是位置透明的&#xff0c;因为您不需要指定消息的使用者所在的位置&#xff0c;而发送/接收模式专门用于通过命名队列进行通信。它也不会假设可以通过队列发送的消息类型。这意味着您可以通过同一队列发送不同类型的消息。 发送/接收模式非常适合创建“…

[css] 不用换行的标签,怎么伪元素实现换行的效果?

[css] 不用换行的标签&#xff0c;怎么伪元素实现换行的效果&#xff1f; 使用\A 换行&#xff0c;并且指定white-space: pre保留换行效果.foo::after {content: 123\A 456;white-space: pre; }个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#…

Linux下将mysql数据导入与导出

一、导出数据库用mysqldump命令&#xff08;注意mysql的安装路径&#xff0c;即此命令的路径&#xff09;&#xff1a; 1、导出数据和表结构&#xff1a; mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql #/usr/local/mysql/bin/mysqldump -uroot -p abc > abc.sql 敲…

​​使用win7超级终端连接华为交换机并配置端口镜像

​ 首先&#xff0c;用console连接主机和交换机&#xff0c;打开超级终端&#xff0c;&#xff08;注意&#xff1a;一定要用win7系统配置&#xff09;如图所示&#xff1a; ​ ​ 新建连接时名字随意&#xff0c;但要注意不能是下面图标&#xff1a; ​ 然后出现下面这…

[css] 给一个图片设置透明有哪些方式呢?

[css] 给一个图片设置透明有哪些方式呢&#xff1f; 1.opacity : 0 -> 子元素会继承 2.外层用盒子包裹&#xff0c;设置其rgba(255,255,255,0)个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目…

电脑安装打印机设备搜索不到解决记录

下面以windows10举例&#xff0c;打印机设备为HP品牌 1.打开控制面板选择查看打印机设备&#xff0c; 选择添加打印机&#xff0c;搜索不出的时候选择我所需的打印机未列出 选择第三个选项&#xff1a;使用TCP/IP地址或主机名添加打印机&#xff0c;点击下一步 填写打印机主机名…

[css] box-sizing的宽度包含了哪些?

[css] box-sizing的宽度包含了哪些&#xff1f; 这个得根据box-sizing来计算&#xff1a;1.box-sizing: content-box; width width 2border 2padding 2.box-sizing: border-box; width width 但是元素内部会被压缩&#xff0c;content width - 2border - 2padding个人简介…

用原生PHP做Blog系统-Day01

目标 用原声PHP&#xff0c;不用框架&#xff0c;写一个博客发布系统&#xff0c;后台管理文章&#xff0c;用户&#xff0c;前台展示。 技术栈 PHPAJAXJavaScript JQueryHTML前端 WordPress阿里百秀模板 后端样式 转载于:https://www.cnblogs.com/huxiaoyi/p/9445565.html

支付宝APP支付 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足

首先&#xff0c;你得搞清楚支付方式&#xff1a; 支付宝支付分为&#xff1a;APP支付 以及 网站支付 两种&#xff0c;所以你要去确认你签约的到底是哪种。 于是&#xff0c;如果签约与调用的一致 解决办法&#xff1a; 登录开放平台 -> 研发管理-> 我的应用->…

[css] 判断如下边框的颜色,并解释为什么[代码]?

[css] 判断如下边框的颜色&#xff0c;并解释为什么[代码]&#xff1f; <p style"color: red;border: 1px solid;">给p设置border&#xff0c;但不给它设置border-color</div>red 当边框颜色未设置值时&#xff0c;边框颜色则和当前字体颜色一致个人简介…

[css] 使用css写一个红绿灯交替的动画效果

[css] 使用css写一个红绿灯交替的动画效果 <!DOCTYPE html> <html lang"en"><head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title></…

JavaScript基础知识(Date 的方法)

Date 的方法 console.log(typeof Date);// "function" Date的实例 console.log(typeof new Date()); // "object" console.log(new Date()); // 获取本机的系统时间&#xff1b; var time new Date(); console.log(time.getFullYear()); // 获取时间年&am…

Java中涉及到金钱计算方法

java中涉及到浮点计算&#xff0c;就会有误差&#xff0c; float和double只能用来做科学计算或者是工程计算&#xff0c;在商业计算中我们要用 java.math.BigDecimal public class MoneyTest{ public static void main(String[] args) { System.out.println(2.00 - 1.10);/…