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

题解:AcWing 1016 最大上升子序列和

【题目来源】

AcWing:1016. 最大上升子序列和 - AcWing题库

【题目描述】

一个数的序列 \(b_i\),当 \(b_1\lt b_2\lt \dots \lt b_S\) 的时候,我们称这个序列是上升的。

对于给定的一个序列(\(a_1,a_2,\dots,a_N\)),我们可以得到一些上升的子序列(\(a_{i_1},a_{i_2},\dots,a_{i_K}\)),这里 \(1\le i_1\lt i_2 \lt \dots \lt i_K\le N\)

比如,对于序列(\(1,7,3,5,9,4,8\)),有它的一些上升子序列,如(\(1,7\)),(\(3,4,8\))等等。

这些子序列中和最大为\(18\),为子序列(\(1,3,5,9\))的和。

你的任务,就是对于给定的序列,求出最大上升子序列和。

注意,最长的上升子序列的和不一定是最大的,比如序列(\(100,1,2,3\))的最大上升子序列和为\(100\),而最长上升子序列为(\(1,2,3\))。

【输入】

输入的第一行是序列的长度\(N\)

第二行给出序列中的\(N\)个整数,这些整数的取值范围都在\(0\)\(10000\)(可能重复)。

【输出】

输出一个整数,表示最大上升子序列和。

【输入样例】

7
1 7 3 5 9 4 8

【输出样例】

18

【解题思路】

image

【算法标签】

《AcWing 1016 最大上升子序列和》 #DP# #线性DP# #最长上升子序列#

【代码详解】

// 引入所有标准库头文件,方便使用各种标准库功能
#include <bits/stdc++.h>// 使用标准命名空间,避免每次使用标准库函数时都需要加 std:: 前缀
using namespace std;// 定义常量
const int N = 1010;  // 数列长度最大为1000// 定义全局变量
int a[N], f[N], n;  // a[N]: 存储输入的数列,f[N]: f[i]表示以a[i]作为结尾的上升子序列的最大和,n: 数列的长度// 主函数,程序的入口点
int main()
{// 读取数列的长度 ncin >> n;// 循环读取数列的每个元素,并存储到数组 a[i] 中,索引从 1 开始for (int i = 1; i <= n; i++) cin >> a[i];  // 读入数列// =============================// 动态规划部分:计算以每个元素 a[i] 作为结尾的上升子序列的最大和// =============================for (int i = 1; i <= n; i++)  // 遍历每个元素 a[i] 作为结尾{// 初始化以 a[i] 作为结尾的上升子序列的最大和为 a[i] 自身(即子序列只包含 a[i])f[i] = a[i];// 遍历 a[i] 之前的所有元素 a[j],寻找可以接在 a[i] 前面的元素for (int j = 1; j < i; j++) {// 如果元素 a[j] 的值小于元素 a[i] 的值,表示可以形成上升子序列if (a[j] < a[i])  // a[j]、a[i] 是上升序列// 更新以 a[i] 作为结尾的上升子序列的最大和为 f[j] + a[i] 和当前 f[i] 中的较大值f[i] = max(f[i], f[j] + a[i]);}}  // =============================// 计算并输出最大的上升子序列的和// =============================// 初始化结果变量 ans,用于记录最大的上升子序列的和int ans = 0;// 遍历所有元素,计算以每个元素 a[i] 作为结尾的上升子序列的最大和,并更新 ansfor (int i = 1; i <= n; i++) // 更新 ans 为 f[i] 和当前 ans 中的较大值ans = max(ans, f[i]);// 输出最大的上升子序列的和cout << ans << endl;// 程序正常结束,返回 0return 0;
}

【运行结果】

7
1 7 3 5 9 4 8
18
http://www.jsqmd.com/news/399013/

相关文章:

  • 少走弯路:降AIGC软件,专科生首选千笔AI VS Checkjie
  • 为什么我建议你建立内容资产而不是流量资产?
  • 2026/2/21 总结
  • 国产激光品牌深度测评:技术实力与市场表现全解读
  • Ora: ORA-28040-数据库不接受您的客户端的验证协议
  • 【系统分析师】9.6 安全管理措施
  • 06实战处理AI音乐技术详解第一阶段:频谱破坏·卓伊凡
  • 海康机器人3D 机器人引导 —— 空间基础篇一
  • 顶配纸尿裤推荐:2026年高端新生儿纸尿裤权威选购指南 - 速递信息
  • 从此告别拖延,AI论文写作软件 千笔AI VS 知文AI,专科生专属神器!
  • 摆脱论文困扰! 千笔AI VS 灵感ai,更贴合MBA的降AIGC工具
  • 2026冲刺用!AI论文平台 千笔AI VS PaperRed,专科生写作新选择!
  • 闭眼入!10个降AI率工具测评:本科生降AI率必备神器
  • 基于SIMULINK的避雷器阻性电流提取与仿真分析模型
  • 在Linux小主机上,搭建Samba服务器,Windows添加网络位置读写
  • 2026年国内质量好的登车桥厂商排行榜,登车桥/装车平台/自行走升降机/装卸平台/液压升降平台,登车桥生产厂家电话 - 品牌推荐师
  • uoj1049 新年的砍树
  • FLUX.1 Kontext:文本驱动图像编辑模型
  • Glck hat mir nie gegeben。
  • 2月聚焦!国内受人认可的东方美学珠宝定制排行推荐,东方秩序/高端珠宝/东方美学珠宝,东方美学珠宝品牌口碑推荐 - 品牌推荐师
  • 题解:最大子段和3
  • 《数字信号处理》学习笔记
  • 柳梦梅
  • 题解:单词解密
  • 2026新年快乐
  • 摆脱论文困扰! 8个降AI率工具测评:自考降AI率全攻略
  • 盘点台州提供宠物腹腔镜绝育的医疗机构,宠物/异宠/狗狗体检/宠物内科/24小时宠物医院,宠物绝育医院哪家靠谱 - 品牌推荐师
  • 自动化测试之魂:Selenium 与 TestNG 深度集成内核、Page Object 模型实战与 Web UI 交付质量指南
  • 如何选择试验机厂家?这几家品牌值得关注,摩擦系数仪/分析仪/试验机/测试仪/测厚仪/检测仪/扭矩仪,试验机企业排行榜单 - 品牌推荐师
  • 横评后发现,一键生成论文工具,千笔·专业论文写作工具 VS 万方智搜AI