[NOIP2006]能量项链【动态规划】

P1063 [NOIP2006 提高组] 能量项链 的详解 阅读详情

【问题描述】

在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为(Mars单位),新产生的珠子的头标记为m,尾标记为n。

需要时,Mars人就用吸盘夹住相邻的两颗珠子,通过聚合得到能量,直到项链上只剩下一颗珠子为止。显然,不同的聚合顺序得到的总能量是不同的,请你设计一个聚合顺序,使一串项链释放出的总能量最大。

例如:设N=4,4颗珠子的头标记与尾标记依次为(2,3) (3,5) (5,10)(10,2)。我们用记号⊕表示两颗珠子的聚合操作,(j⊕k)表示第j,k两颗珠子聚合后所释放的能量。则第4、1两颗珠子聚合后释放的能量为:

(4⊕1)=10*2*3=60。

这一串项链可以得到最优值的一个聚合顺序所释放的总能量为

((4⊕1)⊕2)⊕3)=10*2*3+10*3*5+10*5*10=710。

【输入文件】

输入文件energy.in的第一行是一个正整数N(4≤N≤100),表示项链上珠子的个数。第二行是N个用空格隔开的正整数,所有的数均不超过1000。第i个数为第i颗珠子的头标记(1≤i≤N),当i时,第i颗珠子的尾标记应该等于第i+1颗珠子的头标记。第N颗珠子的尾标记应该等于第1颗珠子的头标记。

至于珠子的顺序,你可以这样确定:将项链放到桌面上,不要出现交叉,随意指定第一颗珠子,然后按顺时针方向确定其他珠子的顺序。

【输出文件】

输出文件energy.out只有一行,是一个正整数E(E≤2.1*109),为一个最优聚合顺序所释放的总能量。

 

解题思路:看到环就想到断环为链了,,一题区间DP,,好像这是我学区间DP的时候做的第一题。。。和加分二叉树差不多,对于区间[i,j],我们枚举k(i<=k<=j)为最后一次合并的地方,然后就可以找到规模更小的问题了。DP方程:f[i][j]=max(f[i][k]+f[k+1][j]+head[i]*tail[j]*tail[k])。

 

代码:

#include
#include
using namespace std;
int i,j,k,n,t,a[205],f[205][105]={0},maxx=0;
int main()
{scanf("%d",&n);
for (i=1;i<=n;i++)
{scanf("%d",&a[i]);
a[i+n]=a[i];
}
for (i=1;i<=n;i++)
{f[i][i+1]=a[i]*a[i+1]*a[i+2];
f[i+n][i+n+1]=f[i][i+1];
}
for (t=2;t<=n-1;t++)
 for (i=1;i<=2*n-1;i++)
 {j=i+t;
  if (j>2*n-1) break;
  for (k=i;k<=j-1;k++)
   if(f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1]>f[i][j])f[i][j]=f[i][k]+f[k+1][j]+a[i]*a[k+1]*a[j+1];}
for (i=1;i<=n;i++)
 if (f[i][i+n-1]>maxx) maxx=f[i][i+n-1];
printf("%d",maxx);
}

区间动态规划—— P1063 [NOIP 2006 提高组] 能量项链 阅读详情

相关推荐

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

能量项链——石子归并(2)

能量项链 【问题描述】 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m...

weixin_34240520的博客 395

PostgreSQL隐式类型转换全解析:告别operator does not exist

强类型数据库是现代数据系统的基石,它在带来严谨性的同时,也常常让开发者在类型不匹配报错前束手无策。当一条SQL因bigint与text比较而抛出operator does not exist时,根源往往在于对数据库隐式转换规则的误解。PostgreSQL通过pg_cast系统表将转换划分为隐式、赋值与显式三个级别,并依据操作符解析逻辑决定是否自动提升类型。理解这些机制,不仅能快速定位JOIN、UNION、函数调用等场景下的类型错误,还能帮助开发者合理使用EXPLAIN VERBOSE、pg_typeof等工

weixin_29587015的博客 305

动态规划三:区间动态规划(19182+11078+洛谷P4170+力扣877)

区间动态规划介绍及几个例题

sigd的博客 1477

告别混乱代码!在Arduino IDE中管理多文件项目的5个必备技巧

本文分享了在Arduino IDE中管理多文件项目的5个必备技巧,帮助开发者告别混乱代码。通过代码分割和模块化设计,提升编译效率、降低内存占用,并实现功能解耦。重点介绍了头文件设计、CPP文件实现、调试技巧和工业级目录结构,让你的Arduino项目像乐高积木一样清晰易维护。

fun88的博客 361

深入剖析STM32F103 I2C总线死锁问题及高效应对策略

本文深入剖析了STM32F103硬件I2C总线在轮询模式下发生死锁的根本原因,即硬件状态机的预取机制与软件响应速度不匹配。文章提供了高效的解决方案,包括在轮询模式下提前发送NACK/STOP信号、降低总线速度,以及治本的中断与DMA应用策略,帮助开发者根据项目需求选择最合适的方案,彻底解决这一经典硬件缺陷问题。

weixin_29184371的博客 206

动态规划-04-区间动态规划

一、简介 区间动态规划简介 区间 DP 是状态的定义和转移都与区间有关,其中区间用两个端点表示。 状态定义 dp[i][j] = [i…j] 上原问题的解。i 变大,j 变小都可以得到更小规模的子问题。 对于单串上的问题,我们可以对比一下线性动态规划和区间动态规划。线性动态规划, 一般是定义 dp[i], 表示考虑到前 i 个元素,原问题的解,i 变小即得到更小规模的子问题,推导状态时候是从前往后,即 i 从小到大推的。区间动态规划,一般是定义 dp[i][j],表示考虑 [i…j] 范围内的元素,原问题的

pyorz的博客 578

本体(Ontology)概述

认识本体        本体(Ontology)的概念源自于哲学领域,在哲学中的定义为“对世界上客观事物的系统描述,即存在论”。哲学中的本体关心的是客观现实的抽象本质。而在计算机领域,本体可以在语义层次上描述知识,可以看成描述某个学科领域知识的一个通用概念模型。德国学者Studer在1998年给出了本体的相关定义“本体是共享概念模型的形式化规范说明”。这个定义包含了四层含义:即共享(share)...

baijinswpu的博客 7万+

环上动态规划学习笔记

环上动态规划需要考虑拆环的问题。在处理环上动态规划时,需要使用滚动数组进行空间优化。

m0_72410588的博客 232

保姆级教程:在Davinci Configurator里配置BswM的ECU状态机(附状态切换流程图)

本文提供了一份详细的AUTOSAR BswM模块配置指南,通过Davinci Configurator工具实现ECU状态机的构建与管理。内容涵盖从模式请求端口创建到状态切换规则定义的全流程,特别针对Ecu State Handling进行了深入解析,并附有状态切换流程图,帮助汽车电子工程师高效完成ECU状态管理配置。

weixin_28366475的博客 411

蓝鸟四轴飞控系统C程序V3.0(基础版本)深度解读

2. 解析遥控通道数据(油门 / 横滚 / 俯仰 / 偏航),转换为标准化值(-1000~+1000);3. 封装PID初始化(PID_Init,配置KP/KI/KD、输出限幅、积分限幅);,包含姿态角(Attitude_Data.Roll/Pitch/Yaw)、角速度(Gyro_Data.X/Y/Z)、遥控值(RC_Data[0~5])、电池电压(Bat_Volt)、电机PWM值(Motor_PWM[0~3])、系统状态(Sys_State),校验和通过Check_Sum()函数计算;

搏博的专栏 344

【动态规划】能量项链

【动态规划】能量项链 【动态规划】能量项链 时间限制: 1 Sec内存限制: 64 MB 题目描述 每个天顶星人都随身佩戴着一串能量项链,在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是天顶星...

weixin_43249938的博客 601

最新Python爬虫实战(入门爬虫篇)——案例15:微博热搜数据采集(详细爬虫思路截图+抓包动图演示+完整爬虫代码+详细注释)

本次案例通过 Python 爬虫技术,成功实现了对微博热搜 API 接口数据的批量爬取与 Excel 保存。代码采用模块化设计,包含接口请求、JSON 解析、数据提取、Excel 持久化等完整流程;通过模拟真实浏览器的请求头和 cookies,有效规避基础反爬策略,保证请求的稳定性。整个爬虫逻辑遵循“API请求 → JSON解析 → 数据提取 → 保存到Excel”的标准流程,与异步加载类网站的爬取范式高度一致。AJAX 接口抓包与分析。

努力让自己发光,对的人才能迎着光而来 7万+

[NOIP2006 提高组] 能量项链(含代码)

在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是 Mars 人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m×r×n。

华仔的博客 1592

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

[动态规划] NOIP2006 能量项链

能量项链(NOIP) 问题描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠

PhantasmDragon的博客 542

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【动态规划】P1063 [NOIP2006 提高组] 能量项链

题目链接-Luogu 题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m×r×n(Mars单位),新产生的

追殇 | Blog 292

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

P1063 [NOIP2006 提高组] 能量项链

一篇P1063 [NOIP2006 提高组] 能量项链的博客

bhxqtdmhy的博客 145

【动态规划】NOIP2006提高组 能量项链

就是以一典型的矩阵链乘法,搞错了一个等号。。。。不过还是挺水的。。。 http://www.ptzyzx.com:8080/JudgeOnline/showproblem?problem_id=1008 //典型的矩阵乘法问题 #include #include using namespace std; int main(){ int n,neck[105]; int energy[1

BananaTree 2558

【NOIP2006】 能量项链 [区间dp]

NOIP2006能量项链 区间dp解法比较固定 枚举区间长度,再枚举左端点,之后枚举区间内的断点进行转移 f[i][j]表示从第i颗珠子合并到第j颗珠子时产生的最大能量 f[i][j]=max(f[i][j],f[i][k]+f[k+1][j]+head[i]*tail[k]*tail[j]) 1 #include<bits/stdc++.h> 2 using n...

weixin_30533797的博客 164

能量项链——典型的区间dp问题,值得一看

在 Mars 星球上,每个 Mars 人都随身佩带着一串能量项链。在项链上有N颗能量珠。能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。因为只有这样,通过吸盘(吸盘是 Mars 人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量。如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为m×r×n。

CylMK的博客 1117

NOIP2006 提高组 复赛 energy 能量项链

NOIP2006 提高组 复赛 energy 能量项链 //觉得想得蛮好,提交,测试点1,4,8,9,10 WA //提供一组测试数据 //4 //3 2 1 4 //输出 //80 //for(i=1;i+k&lt;=2*n-1;i++)//此处写成for(i=1;i&lt;=n;i++),查了好长时间 //for(i=1;i&lt;=n;i++)只算了1,2,...,n为起始位置的情况 //...

mrcrack的博客 1619

洛谷 P1063 [NOIP2006 提高组] 能量项链(区间dp基础题)

题目链接: [NOIP2006 提高组] 能量项链 - 洛谷https://www.luogu.com.cn/problem/P1063 思路: 区间dp,每一个[ i, j ]区间的能量值都可以由[ i, k ]和[ k+1, j ]的能量加上当前合成得到能量计算得到,每个这样的区间,我们都取最大值,最终所有长度为n的区间中能量最大的就是答案。 代码: #include <bits/stdc++.h> using namespace std; const int maxn ..

bunny_1024的博客 598

COGS 116. [NOIP2006] 能量项链 解题报告

区间DP注意区间!

Janis_z的博客 641

DP - 区间DP - NOIP 2006 - 能量项链

DP - 区间DP - NOIP 2006 - 能量项链 在Mars星球上,每个Mars人都随身佩带着一串能量项链,在项链上有 N 颗能量珠。 能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数。 并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记。 因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸...

njuptACMcxk的博客 239

[NOIP2006 提高组] 能量项链

如果前一颗能量珠的头标记为 �m,尾标记为 �r,后一颗能量珠的头标记为 �r,尾标记为 �n,则聚合后释放的能量为 �×�×�m×r×n(Mars 单位),新产生的珠子的头标记为 �m,尾标记为 �n。第 �i 个数为第 �i 颗珠子的头标记(1≤�≤�1≤i≤N),当 �<�i<N 时,第 �i 颗珠子的尾标记应该等于第 �+1i+1 颗珠子的头标记。例如:设 �=4N=4,44 颗珠子的头标记与尾标记依次为 (2,3)(3,5)(5,10)(10,2)(2,3)(3,5)(5,10)(10,2)。

w_w_wwwww的博客 419

f081: 能量项链

f081: 能量项链关键字: NOIP2006<br /> 难度: 1 | 数据点: 10 | 评判方式: Traditional Judge <br />通过 : 68 次 | 发送 :151 次 | 浏览 : 505 <br />通过 : 58 人 | 发送 : 70 人 | 通过比率 : 83% <br />时间限制 :1000 ms | 内存限制 : 64000 KBytes<br />题目加入时间 : 2009-10-26 20:47 <br /><br />内容:<br />题目描述<br />

kongming_acm的专栏 1148
上一篇: [NOIP2004]虫食算【搜索】
下一篇: [NOIP2006]金明的预算方案【动态规…
Tag_king
博客等级 码龄12年 15粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值