洛谷P1063能量项链(区间dp)
题目描述:
给定一串序列x[],其中的每一个Xi看作看作一颗珠子,每个珠子包含两个参数,head和tail,前一颗的tail值是后一个的head值,珠子呈现环形(是一条项链),所以最后一颗的tail是第一个珠子的head.当tail遇到对应的head时会放出
Xi.head*Xi.tail*X++i.head,之后这两颗相邻的珠子会变成新的一颗Xp,它的参数为Xp.head=Xi.head,Xp.tail=X++i.tail,问整条项链合并到只剩下一颗时所能产生的最大能量.
题目链接:P1063
至于珠子的顺序,你可以这样确定:将项链放到桌面上,不要出现交叉,随意指定第一颗珠子,然后按顺时针方向确定其他珠子的顺序。
输出格式
一个正整数E(E≤2.1×(10)9)E(E≤2.1 \times (10)^9)E(E≤2.1×(10)9),为一个最优聚合顺序所释放的总能量。
in:
4
2 3 5 10
out:
710
思路:区间dp,以小区间来作为最优子结构来计算大区间,整个题目的解法等价于找1~E中从哪一个最开始先合并,我们以dp[i][j]表示合并区间i到j的最优解,在i到j中选取k开始合并的状态转移方程为:dp[i][j]=max(dp[i][j],dp[i][k]+dp[k+1][j]+a[i].h*a[j].t*a[i+k].t)
那么算法大体就定下来了O(n^3)的思路
#include <bits/stdc++.h>
using namespace std;
struct node//存珠子
{
int h;
int t;
} e[];
int n;
int dp[][];
int total;
int main()
{
cin>>n;
for(int i=; i<n; i++)
{
int x;
cin>>x;
if(i==)
{
int y;
cin>>y;
e[i].h=x;
e[i].t=y;
continue;
}
e[i].h=e[i-].t;
e[i].t=x;
if(i==n-)
{
e[n].h=e[n-].t;
e[n].t=e[].h;
}
}//输入,第一个和最后一个做了特判
for(int i=; i<n; i++)
e[i+n]=e[i];//这一步很关键,相当于拆环,把整段序列在往尾部接上一次,以达到环形
for(int i=; i<=n; i++)
for(int j=; j<*n-i; j++)
for(int k=j; k<i+j; k++)
dp[j][j+i]=max(dp[j][j+i],dp[j][k]+dp[k+][j+i]+e[j].h*e[k].t*e[i+j].t);
for(int i=;i<=n;i++)
total=max(total,dp[i][i+n-]);
cout<<total; return ;
}
洛谷P1063能量项链(区间dp)的更多相关文章
- 洛谷 - P1063 - 能量项链 - 区间dp
https://www.luogu.org/problemnew/show/P1063 这个并不是每次只能从两边扩展的,可以从中间断开. #include<bits/stdc++.h> u ...
- 『题解』洛谷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)
嗯... 题目链接:https://www.luogu.com.cn/problem/P1063 这道题首先要读懂题目,然后往上套区间dp,要转换成链式. AC代码: #include<cstd ...
- 洛谷P1063能量项链题解
$题目$ 不得不说,最近我特别爱刷这种区间DP题,因为这个跟其他的DP有些不一样的地方,主要是有一定的套路,就是通过小区间的状态更新大区间,从而得到原题给定区间的最优解. $但是$ 这个题应该跟$石子 ...
- P1063 能量项链 区间dp
题目描述 在MarsMars星球上,每个MarsMars人都随身佩带着一串能量项链.在项链上有NN颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一 ...
随机推荐
- IDEA | 识别不出自建webapp文件夹
背景: 今天自建了一个webapp文件夹,发现idea识别不出来是web应用的资源文件夹 解决方案 打开project structure配置,如下图
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- 时序数据库 Apache-IoTDB 源码解析之系统架构(二)
上一章聊到时序数据是什么样,物联网行业中的时序数据的特点:存量数据大.新增数据多(采集频率高.设备量多).详情请见: 时序数据库 Apache-IoTDB 源码解析之前言(一) 打一波广告,欢迎大家访 ...
- 解决Apple Mobile Device USB Driver
在设备管理器里找到便携设备:APPLE IPHONE 更新驱动 自定义更新:在设备管理器里找到便携设备:APPLE IPHONE 更新驱动 自定义更新:C:\Program Files\Common ...
- DG参数 LOG_ARCHIVE_DEST_n
DG参数 LOG_ARCHIVE_DEST_n This chapter provides reference information for the attributes of the LOG_AR ...
- 2.5D(伪3D)站点可视化第一弹
楔子 最近要做一个基站站点的可视化呈现项目. 我们首先尝试的是三维的可视化技术来程序,但是客户反馈的情况是他们的客户端电脑比较差,性能效率都会不好,甚至有的还是云主机. 因此我们先做了一个性能比较极致 ...
- 在IDEA中如何使用lombok插件
lombok 插件 lombok是一款可以精减java代码.提升开发人员生产效率的辅助工具,利用注解在编译期自动生成 setter/getter/toString()/constructor之类的代码 ...
- qt creator源码全方面分析(2-10-5)
目录 The Plugin Manager, the Object Pool, and Registered Objects 插件管理器 对象池和已注册对象 The Plugin Manager, t ...
- DeBug Python神级工具PySnooper
安装 pip3 install pysnooper import pysnooper @pysnooper.snoop() def number_to_bits(number): if number: ...
- 将你的Archlinux打造成路由器
弄了一块J2900双千兆网口的工控板回来(奇怪的型号)当软路由用,无奈我又想各种皮,还想装桌面环境配VNC,而且我还对虚拟机不感冒(况且这U还不支持直通),只得放弃所有路由器系统.作为一名Arch铁粉 ...