HSACM 1680 能量项链

2024-05-31 13:38
文章标签 能量 项链 1680 hsacm

本文主要是介绍HSACM 1680 能量项链,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



1680: 能量项链

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 39   Solved: 13   Scores: 90.11
[ Submit][ Status][ BBS]

Description

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

Input

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

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

Output

只有一行,是一个正整数E(E≤2.1*10^9),为一个最优聚合顺序所释放的总能量。

Sample Input

4
2 3 5 10

Sample Output

710

HINT

Source

NOIP2006提高组


这题就是算法课上陈老师说的,动态规划解矩阵连乘。

已根据PPT做成模板。

模板是。

假设矩阵A (3,5) A1(5,8) A2(8 10)

计算AA1A2矩阵相乘,怎样让乘法次数最多。

其中主函数需要保存一个数组,如果是上例,则数组(3,5,8,10)


这题还需要注意一点就是,按照题目里面说的,放进数组里的时候,需要再加上一项   。否则少了一颗珠子。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;int p[1005],m[1005][1005],s[1005][1005];
int ans = 0;
void MatrixChain(int n){for(int i = 0; i <= n; i++) m[i][i] = 0;for(int r = 2; r <= n; r++)for (int i = 1; i <= n-r+1; i++) {int j = i+r-1;m[i][j] = m[i+1][j]+p[i-1]*p[i]*p[j];s[i][j] = i;for(int k = i+1; k < j; k++) {int t = m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];if (t > m[i][j]) {m[i][j] = t; s[i][j] = k;}}}
}int main(){int n;cin>>n;int a[1005];for(int i = 0;i < n;i ++)cin>>a[i];//ANS(1,n);//cout<<endl;int mmax = 0;for(int i = 0;i < n;i++){int t = 0;for(int j = i;j < n;j++) p[t++] = a[j];for(int j = 0;j < i;j++) p[t++] = a[j];p[t++] = a[i];MatrixChain(n);mmax = max(mmax,m[1][n]);}
//  cout<<"最少连乘次数为:";cout<<mmax<<endl;return 0;
}

这篇关于HSACM 1680 能量项链的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1018078

相关文章

能量项链,洛谷

解释:  环形dp问题还是考虑将环拉直,可以参考我上一篇文章:环形石子合并 [2 3 5 10 2] 3 5 10 将环拉直,[]内是一个有效的区间,可以模拟吸收珠子的过程,         如[2 3 5] <=>(2,3)(3,5)    2是头,3是中间,5是尾 len >= 3:因为最后[2 10 2]是最小的可以合并的有效区间 len <= n + 1因为[2 3

【COGS】421 [SDOI2009] HH的项链 树状数组

传送门:【COGS】421 [SDOI2009] HH的项链 题目分析:将区间以右端点为关键字降序排序,然后从左到右依次遍历每个数并插入到树状数组中,如果遍历到一个数的时候在他的前面已经有一个相同的数时,将之前位置上的数从树状数组中删除。然后我们每处理完一个位置上的数后,看这个位置上是否有右端点,如果有则做一次求和,这个右端点属于的区间【L,R】的值即sum(R)-sum(L-1)。

【Get深一度】信号处理(一)——能量信号与功率信号的区别

1.1 能量信号与功率信号的区别         通常情况下,电信号默认为电流(I)或电压(V),有两种主要类型:能量信号、功率信号。相信有朋友现在依然还是傻傻分不清楚这两者之间的区别。 下面我将进行分条详述:(关键词已加黑)        1)能量信号:表现为    确定或随机        2)功率信号:变现为    周期或随机          注:其中随机信号是比较好理解的

新能源汽车超级电容和电池能量管理系统的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 电池模型 4.2 电池荷电状态(SOC)估算 4.3 超级电容器模型 4.4 能量管理 5.完整工程文件 1.课题概述         新能源汽车的能量管理系统(Energy Management System, EMS)旨在高效管理和分配车辆内的能量资源,以提高整体能效和延长行驶里程

音频PCM的能量dB计算

文章目录 1. 计算RMS值2. 将RMS转换为dB 参考1参考2参考3 音频PCM(脉冲编码调制)数据转换为分贝(dB)的计算涉及两个主要步骤:首先计算音频信号的均方根(RMS)值,然后将RMS值转换为分贝。以下是详细的计算过程(以16位PCM为例): 1. 计算RMS值 对于PCM音频数据,每个样本代表声音的幅度。如果有一个包含 (n) 个样本的音频片段,其幅值分别为

Comsol 声学黑洞梁式结构的振动能量收集器

声学黑洞梁式结构是一种用于收集振动能量的装置,其工作原理类似于光学中的黑洞概念。它可以将周围环境中的声波能量转化为可用的电能。声学黑洞梁式结构通常由以下几个主要组成部分构成: 1. 梁:梁是主要的振动结构,可以是金属、陶瓷或者其他适合传导声波的材料。它的设计通常考虑到频率响应和材料的机械特性,以优化能量收集效率。 2. 能量转换器:能量转换器位于振动膜的背面,用于将振动能量转化为电能。

能量英语(四) 之 “信念”

能量英语(四)  之 "信念"          英语音频地址:点击打开链接    访问密码: 257b     信念是又一个极其重要的管理自己心理、强化自己心理因素的秘诀,有了坚强的信 念,我们能更快的学好英语或其他任何东西,学习其他任何东西都会更加的快速。       一般有两种信念在影响着我们,一种是自我设限

NYOJ 280 LK的项链 POJ 2409 Let it Bead(polya 定理)

NYOJ 280 LK的项链  :click here POJ 2409 Let it Bead:click here 题意:一盒有红、蓝、绿三种颜色的珠子,每种颜色珠子的个数都大于24,现在LK想用这一盒珠子穿出一条项链,项链上的珠子个数为n(0<=n&lt;=24),请你帮她计算一下一共可以用这一盒珠子可以穿出多少条不同的项链。通过旋转、翻转达到同一种状态的被认为是相同的项链。

能量单位的换算:kcal/mol 与 eV

1 kcal/mol = 0.0433641 eV 因此: 从 kcal/mol 转换为 eV: E(eV)=E(kcal/mol)×0.0433641 从 eV 转换为 kcal/mol: E(kcal/mol)=E(eV)×23.0605

lammps中有关能量的默认单位

在LAMMPS中,fix wall/lj93命令中的ϵ\epsilonϵ(势能深度)的默认单位取决于你在LAMMPS输入脚本中使用的单位系统。 具体来说,常见的LAMMPS单位系统及ϵ\epsilonϵ的默认单位如下: units real: ϵ\epsilonϵ 的单位是 kcal/mol。 units metal: ϵ\epsilonϵ 的单位是 eV。 units lj (Lennar