元素共鸣:唤醒神之眼

描述

在提瓦特大陆上,有N座由原石构成的神秘石柱,它们依次排列,编号为1,2,3,…,N。每座石柱都蕴含着不同程度的元素能量,这种能量的强度可以用一个整数来量化。为了唤醒沉睡中的神之眼,冒险者们必须将这些原石石柱合而为一,释放出最强大的元素共鸣。

每次只能选择相邻的两座石柱进行合并,合并的过程中会释放出一定量的元素能量,其值等于这两座石柱能量值的总和。合并后,这两座石柱就会形成一座新的更大的石柱,而与这两座石柱原先相邻的石柱将与新形成的石柱相邻。不同的合并顺序会导致不同的总能量释放量。

冒险者们如何选择合并的顺序才能使释放的元素能量总量最小,以尽可能节约能量唤醒神之眼?

输入

第一行一个数N表示原石石柱的数量N。(1≤N≤300)

第二行N个数,表示每座石柱的元素能量值(均不超过1000)。

输出

输出一个整数,表示能量释放的最小总量。

输入样例 

4
1 3 5 2

输出样例

22

思路:区间dp

我们可以定义一个二维数组 dp,其中 dp[i][j] 表示合并第 i 到第 j 座石柱所释放的最小总能量。

假设我们要合并第 i 到第 j 座石柱,那么可以遍历所有可能的分割点 ki <= k < j),将其分为两部分 [i, k] 和 [k+1, j],然后递归地求解这两部分的最小能量释放量,并将其相加。最后再加上合并第 i 到第 j 座石柱所需要的能量,即 sum[i][j]。选取所有分割点中能量释放量最小的情况作为 dp[i][j] 的值。

最终答案即为 dp[1][N]

代码实现:

#include <iostream>
#include <vector>
#include <climits>
using namespace std;
int stelae[305]={0};
int sum[305]={0};
class solution
{
public:void Dp(vector<vector<int>>& dp,int N){// 动态规划求解最小能量释放量for (int len = 2; len <= N; ++len) {for (int i = 1; i <= N - len+1 ; ++i) {int j = i + len-1;dp[i][j] = INT_MAX;for (int k = i; k < j; ++k) {dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + sum[j] - sum[i - 1]);}}}cout<<dp[1][N]<<endl;}
};
int main() {int N;cin >> N;vector<vector<int>> dp(N + 1, vector<int>(N + 1, 0));// 读入每座石柱的能量值,并计算前缀和for (int i = 1; i <= N; ++i) {cin >> stelae[i];sum[i] = sum[i - 1] + stelae[i];}solution p;p.Dp(dp,N);return 0;
}

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

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

相关文章

项目管理中的资源控制

在项目管理中,资源的控制是非常关键的环节,它决定了项目的顺利进行与否以及最终的效益。项目管理的资源控制涵盖了多个方面,以下是对这些方面的详细探讨。 1. 资源需求分析 首先,项目经理需要对项目进行资源需求分析。这包括确定项目所需的人力、物力、财力等各类资源,并…

element-ui collapse 组件源码分享

今日简单分享 collapse 组件的源码实现&#xff0c;主要分为四个方面&#xff1a; 1、collapse 组件页面结构 2、collapse 组件属性 3、collapse 组件事件 4、collapse item 组件属性 一、collapse 组件页面结构 二、collapse 组件属性 2.1 value/v-model 属性&#xff0…

Ubuntu18.04+2070s+TF2.x环境,单卡训练PointNet++实战

Ubuntu18.042070sTF2.x环境&#xff0c;单卡训练PointNet实战 1. 编译tf_ops文件夹下的三个动态库2. 修改Python版本、TF版本不一致带来的差异3. 下载训练数据4. 模型训练 1. 编译tf_ops文件夹下的三个动态库 该文件夹下定义了一些pointnet模型中需要使用的cuda核函数&#xf…

程序代码分析工具

文章目录 工具简介和安装DoxygenGraphziv软件安装 工具的运用启动和配置工具分析结果 工具简介和安装 Doxygen Doxygen 是一种用于从 C 、C 、Objective-C 、C# 、Java 和 Python 等语言的源代码中生成文档的工具。它通过解析源代码中的注释来创建详细的 API 文档&#xff0c;…

深度强化学习调参技巧

在深度强化学习中,调参是一个非常重要的任务,它直接影响到模型的性能和收敛速度。下面是一些常用的深度强化学习调参技巧: 选择合适的环境和任务: 首先要确保选择的环境和任务适合深度强化学习。不同的环境和任务对算法的表现有着不同的要求,因此需要根据具体情况选择合适…

码农失业倒计时?全球首个大厂AI程序员来了

进入互联网时代&#xff0c;程序员作为高收入职业的代表&#xff0c;长久以来一直是众多求职者梦寐以求的工作方向。程序员们凭借其对计算机科学的深刻理解和技术创新能力&#xff0c;不仅推动了科技的进步&#xff0c;也为自己赢得了可观的经济回报。 然而&#xff0c;随着人…

多叉树题目:N 叉树的层序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;N 叉树的层序遍历 出处&#xff1a;429. N 叉树的层序遍历 难度 4 级 题目描述 要求 给定一个 N 叉树的根结点 root \texttt{root} root&#xf…

SAP FI学习笔记04 - 基础知识 - 新规会计科目,用 应收账款科目 做个例子

上一章讲了 应付账款 的来源及操作。 SAP FI学习笔记03 - 应付账款-CSDN博客 本章先尝试做一个会计科目&#xff0c;然后再用 应收账款 科目做个例子。 应收账款 和 应付账款 一样&#xff0c;也有两个视图。 1&#xff0c;新建几个会计科目 这一章来尝试着创建会计科目。 …

蓝桥杯嵌入式备考笔记

keil配置 LED-KEY-LCD 留下这几个 按键 创建俩个文件写代码&#xff0c;记得把这两个文件加进工程 led uwTick 1ms执行一次 写错了 不是1000 是100 PD2 SET 表示打开锁存器 可以操作LED LED对应PC引脚拉高是熄灭 key 如果要在main使用需要extern LCD最多21位 …

html网页设计项目实战--王者荣耀官网源码

随着王者荣耀这款游戏在全球范围内的迅速流行,其精美的官网设计也受到了广大玩家的喜爱。作为一名热衷于前端开发的程序员,我决定挑战自己,尝试模仿并重现这一经典之作。 在设计过程中,我深入研究了王者荣耀官网的布局、色彩搭配以及交互元素,力求在模仿的同时保留其精髓…

通讯录(顺序表)保存数据

在通讯录的基础上加上三个函数实现数据的保存。 分别为录入数据&#xff0c;加入数据与保存数据。 加入数据 先检查通讯录空间是否足够&#xff0c;然后将结构体ab中的数据全部放入通讯录mn中。 注意&#xff1a;字符串的拷贝要使用函数strcpy而不能直接用 加入完成之后将通…

深入浅出 -- 系统架构之微服务架构

1.1 微服务的架构特征&#xff1a; 单一职责&#xff1a;微服务拆分粒度更小&#xff0c;每一个服务都对应唯一的业务能力&#xff0c;做到单一职责 自治&#xff1a;团队独立、技术独立、数据独立&#xff0c;独立部署和交付 面向服务&#xff1a;服务提供统一标准的接口&…

Java数据结构-队列

目录 1. 队列概念2. 模拟实现队列2.1 链式队列2.2 循环队列 3. 双端队列4. 队列的应用4.1 用队列实现栈4.2 用栈实现队列 1. 队列概念 队列是一种只能在一端进行插入数据操作&#xff0c;另一端进行删除数据操作的数据结构&#xff0c;插入数据的叫队尾&#xff0c;删除数据的…

若依框架mysql 搜索中文等于不生效

背景&#xff0c;字段存储的是中文 不生效代码如下 <if test"constellation ! null and constellation ! ">AND u.constellation #{constellation}</if> 正确生效的代码如下 <if test"constellation ! null and constellation ! ">A…

设计模式:装饰器模式

定义 装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许用户在不修改原有对象代码的情况下,通过创建一个装饰类来给对象动态地添加新的功能。装饰器模式通过组合而非继承的方式来扩展对象的功能,这种方式提供了比继承更有弹性的替代方案。 应用场景 装饰器模式…

Qt5.14.2 定时器黑魔法,一键唤醒延时任务

在图形界面程序的世界里&#xff0c;有这么一个需求无处不在:在特定的时间间隔后&#xff0c;执行一段特殊的代码。比如说30秒后自动保存文档、500毫秒后更新UI界面等等。作为资深Qt程序员&#xff0c;我相信各位一定也曾为实现这种"延时任务"而绞尽脑汁。今天&#…

Python搭建编程环境-安装Python3解释器

✅作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1&#x1f3c5; &#x1f525;本文已收录于Python系列专栏&#xff1a;零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书…

线性代数笔记23--马尔可夫矩阵、傅里叶级数

1. 马尔可夫矩阵 例子 A [ . 1 . 001 . 3 . 2 . 099 . 3 . 7 0 . 4 ] A \begin{bmatrix} .1 & .001 & .3\\ .2 & .099 & .3\\ .7 & 0 & .4 \end{bmatrix} A ​.1.2.7​.001.0990​.3.3.4​ ​ 马尔可夫矩阵满足条件 λ 1 为特征值 \lambda1为特征…

复现k8s黄金票据学习

1.什么是黄金票据 在 Kubernetes 中&#xff0c;"黄金票据"并不是一个常见的术语。可能你想了解的是服务账户&#xff08;Service Account&#xff09;。服务账户是 Kubernetes 中用于身份验证和授权的一种机制。它们允许 Pods 或其他工作负载在 Kubernetes 集群中与…

React|Echarts|Antd|在Modal中展示echarts不显示的问题

打开modal时echarts部分空白&#xff1a; 解决方法&#xff1a;使用ref绑定div&#xff0c;dom存在时再draw <divid"quintuple"style{{width: "450px",height: "350px",}}ref{modalRef}/>const modalRef (obj) > {if (obj) {drawChar…