洛谷 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

洛谷 P1063 能量项链 区间dp相关推荐

  1. 洛谷 P1063 能量项链

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

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

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

  3. [洛谷]P1220 关路灯 (#区间dp)

    题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...

  4. 能量项链--区间dp典例

    题目 思路 1.断环成链 2.区间大小枚举 3.区间起点枚举 4.区间的划分枚举 分析 1.可以采用处理环形问题的通用技巧,即复制一份接到后面.这里虽然输入是N个数,但实际上我们要求的是长N + 1的 ...

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

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

  6. P1063 能量项链

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

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

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

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

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

  9. 洛谷1594 护卫队_区间dp_题解

    护卫队 出自洛谷题库 https://www.luogu.com.cn/problem/P1594 [问题描述] 不是具体题目 大概就是有n个车要过河,只有一个桥(理论上只能单向通行,其实不用管对面) ...

最新文章

  1. 【深度学习理论】(2) 卷积神经网络
  2. win 2008 控制共享文件夹大小_Windows转Mac Win10局域网文件共享设置
  3. 数据安全(主从复制)
  4. DCMTK:创建大型(> 4 GB)增强型CT对象的测试
  5. SQL 获取数据IP,ServerName,ClientIPAddress
  6. 无线网络虚拟服务器,无线虚拟局域网
  7. 杨玲 201771010133《面向对象程序设计(java)》第十六周学习总结
  8. 访问量中 pv uv ip的区别
  9. elcipse 编译cocos2d-x android
  10. 上古计算机语言,微软开源其上古编程语言GW-BASIC
  11. 常见的74系列集成电路
  12. elasticsearch问题: SERVICE_UNAVAILABLE/1/state not recovered /initialized
  13. 可达编程 [语言题]中国身份证号码校验
  14. 公众号网课搜题系统-掘光者题库
  15. 分辨率变化的数据from mydrivers 显卡评测
  16. 中学计算机课外小组活动计划,小学数学课外活动计划
  17. 两步实现在C代码中快速集成gtest进行单元测试
  18. ftp 下载 工具,5款小白都能使用的ftp 下载 工具
  19. css flew 布局 解决父元素高度不固定,子级居中。
  20. java好学么_java是什么好学吗?难不难学?

热门文章

  1. 第二章:图像处理基础
  2. create-react-app 使用代理做 mock
  3. 由Qt中qApp想到的(这是单例模式么???)
  4. i++ 和 ++i 效率的分析以及自定义类型的自增/自减运算符重载实例
  5. 重学java基础第十课:windows快捷键
  6. 前端学习(3131):react-hello-react之总结ref
  7. [html] 怎样避免让用户看到长时间的白屏?
  8. 工作378-封装axios方法
  9. [html] js放在html的<body>和<head>有什么区别?
  10. 工作260:js判断一个数组是否包含一个指定的值