当前位置: 首页 > news >正文

最大花之能量(蓝桥杯)

文章目录

  • 最大花之能量
    • 问题描述
    • 动态规划

最大花之能量

问题描述

在一个神奇的王国里,有一个美丽的花园,里面生长着各种奇妙的花朵。这些花朵都有一个特殊的能力,它们能够释放出一种叫做「花之能量」的神秘力量。每朵花的花之能量都不同,它们的能量值用整数表示。

花园里住着四个好朋友:小兰、坤坤、妮妮和依依。他们都非常喜欢花园里的花朵,尤其是那些能量值特别高的花朵。他们认为,只要他们能够找到一种特殊的方法,就可以从花园里的花朵中获得最大的花之能量。

给定花园中的花朵能量序列 (a1,a2 ,…,aN),你需要帮助他们找到一种方法,使得他们能够获得最大的花之能量。这种方法是这样的:从序列中选择一些花朵,组成一个新的序列(ai1 ,ai2 ,…,aiK),其中 1≤i1 <i2<…<iK ≤N,并且这个新序列是一个严格递增序列。

他们的目标是求出这种方法中能够获得的最大花之能量的总和。

你需要编写一个程序,根据给定的花朵能量序列,计算出他们能够获得的最大花之能量的总和。

输入格式
输入的第一行是序列的长度 N。

第二行给出序列中的 N 个整数 a1 ,a2 ,a3 ⋯an ,表示花朵的能量值。

数据范围保证:1≤N≤103,1≤ai ≤104

输出格式
输出一个整数,表示他们能够获得的最大花之能量的总和。

样例输入

7
8 3 5 9 4 6 7

样例输出

21

动态规划

#include<bits/stdc++.h> // 引入常用的头文件,包含STL库等
using namespace std;   // 使用标准命名空间int a[1010],dp[1010]; // 声明两个数组a和dp,大小为1010,a存储花之能量,dp存储状态转移过程中的最大和int main() // 程序的主函数
{int n;  // 声明整数变量n,用于保存花朵的总数cin >> n; // 从标准输入读取花朵总数int res = 0; // 声明整数变量res并初始化为0,用于记录最大花之能量的总和// 输入花之能量序列for(int i = 1; i <= n; i++) // 从1遍历到n,读取每朵花的能量cin >> a[i]; // 从标准输入读取每朵花的花之能量并存储在数组a中// 计算最大花之能量的和for(int i = 1; i <= n; i++) // 主循环,从1遍历到n,以计算到第i朵花为止的最大花之能量和{dp[i] = a[i]; // 初始化dp[i]为a[i],表示最小的上升子序列可以只包含自己for(int j = 1; j < i; j++) // 从1遍历到i-1,寻找所有可能的子序列的前一个花朵{if(a[j] < a[i]) // 如果a[j]的能量值小于a[i]的能量值,说明可以形成一个上升子序列dp[i] = max(dp[i], dp[j] + a[i]); // 更新dp[i]为dp[j]+a[i]和dp[i]中较大的值,实现状态转移}res = max(res, dp[i]); // 更新res为res和dp[i]中较大的值,即到目前为止的最大花之能量}cout << res; // 输出最终的最大花之能量return 0; // 主函数返回0,正常结束程序
}

这段代码实现了一个经典的动态规划问题,用于求解最长递增子序列的和。

  • dp[i]存储了以a[i]为结尾的最长递增子序列的和。
  • 外部循环用于遍历所有花朵。
  • 内部循环用于找到所有小于当前花朵能量值的花朵,并尝试更新dp[i]
  • res变量用于在每次迭代之后保存到目前为止找到的最大和,最后输出该值。
http://www.lryc.cn/news/334614.html

相关文章:

  • 探索算力(云计算、人工智能、边缘计算等):数字时代的引擎
  • 数据可视化-ECharts Html项目实战(10)
  • 甲方安全建设之研发安全-SCA
  • [html]网页结构以及常见标签用法
  • 【C语言】if语句选择题
  • ZLMediaKit ubantu 下编译
  • 什么是stable diffusion
  • C++ list链表模拟实现
  • LangChain - PromptTemplate
  • spring cloud gateway openfeign 联合使用产生死锁问题
  • 【WPF应用37】WPF基本控件-DatePicker的详解与示例
  • GitHub教程:最新如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细步骤讲解(图文教程)
  • 编译Nginx配置QUIC/HTTP3.0
  • 【JavaWeb】Day38.MySQL概述——数据库设计-DQL
  • 如何使用Java和RabbitMQ实现延迟队列(方式二)?
  • String.valueOf() 将各种数据类型的值转换为它们的字符串
  • 2024-04-08 NO.6 Quest3 自定义交互事件
  • 素描进阶:深入探索如何表现石膏像的质感
  • flutter组件_AlertDialog
  • 供应链领域主题:生产制造关键术语和系统
  • k8s_入门_kubelet安装
  • 主干网络篇 | YOLOv5/v7 更换骨干网络之 HGNetv2 | 百度新一代超强主干网络
  • JUC:ScheduledThreadPoolExecutor 延迟任务线程池的使用
  • js str字符串和arr数组互相转换
  • 计算机网络——40各个层次的安全性
  • OpenHarmony实战:Combo解决方案之W800芯片移植案例
  • 【数据结构】数组(稀疏矩阵、特殊矩阵压缩、矩阵存储、稀疏矩阵的快速转置、十字链表)
  • nginx 配置访问地址和解决跨域问题(反向代理)
  • 支持向量机(SVM)白话之个人理解(学习记录)
  • 【运输层】TCP 的可靠传输是如何实现的?