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

GESP认证C++编程真题解析 | 202603 六级

编程题

P15800 选数

【题目来源】

洛谷:[P15800 GESP202603 六级] 选数 - 洛谷

【题目描述】

给定两个包含 \(n\) 个整数的数组 \(a=[a_1,\dots,a_n]\)\(b=[b_1,\dots,b_n]\)。你需要指定若干下标 \(p_1\lt \cdots\lt p_k\)\(1\leq k\leq n\))使得以下条件成立:

  • \(1\leq p_i\leq n\)\(1\leq i\leq k\));
  • \(p_{i+1}\geq p_i+b_{p_i}\)\(1\leq i< k\))。

你需要在满足以上条件的前提下最大化 \(\sum_{i=1}^k a_{p_k}\),也即最大化数组 \(a\) 对应下标的整数之和。

【输入】

第一行,一个正整数 \(n\),表示数组长度。

第二行,\(n\) 个正整数 \(a_1,a_2,\dots,a_n\),表示数组 \(a\)

第三行,\(n\) 个正整数 \(b_1,b_2,\dots,b_n\),表示数组 \(b\)

【输出】

一行,一个整数,表示在满足下标条件的前提下,数组 \(a\) 对应下标的整数之和的最大值。

【输入样例】

4
1 2 3 4
3 3 1 1

【输出样例】

7

【算法标签】

《洛谷 P15800 选数》 #动态规划DP# #GESP# #2026#

【代码详解】

// 40分版本
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 100005;int n, a[N], b[N], ans;
// dp[i] 表示以第 i 个活动结尾时,能获得的最大价值
int dp[N];
int len = 0;signed main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}for (int i = 1; i <= n; i++){cin >> b[i];}for (int i = 1; i <= n; i++){// 初始化:只选择第 i 个活动dp[i] = a[i];// 考虑在 i 之前的活动 jfor (int j = 1; j < i; j++){// 检查活动 j 结束后是否可以安排活动 iif (i >= j + b[j]){// 如果可以,则尝试从活动 j 转移到活动 idp[i] = max(dp[i], dp[j] + a[i]);}}}// 找到所有 dp[i] 中的最大值for (int i = 1; i <= n; i++){ans = max(ans, dp[i]);}cout << ans << endl;return 0;
}
// 100分版本
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 100005;int n, a[N], b[N];
// dp[i]: 到时间i为止能获得的最大收益(不包含在时间i开始的任务)
int dp[N];signed main()
{    cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}for (int i = 1; i <= n; i++){cin >> b[i];}int ans = 0;for (int i = 1; i <= n; i++){// 情况1: 在时间i开始执行任务i// 收益 = 到时间i为止的最大收益 + 任务i的收益ans = max(ans, dp[i] + a[i]);// 如果执行任务iint finish_time = i + b[i];if (finish_time <= n){// 在任务i结束时更新收益dp[finish_time] = max(dp[finish_time], dp[i] + a[i]);}// 情况2: 在时间i不执行任何任务// 收益延续到下一个时间点dp[i + 1] = max(dp[i + 1], dp[i]);}// 注意:最终答案不一定是dp[n],因为可能在n时刻之前就已经得到了最大收益// 我们已经在循环中通过ans记录了所有可能的最大值cout << ans << endl;return 0;
}

【运行结果】

4
1 2 3 4
3 3 1 1
7
http://www.jsqmd.com/news/501774/

相关文章:

  • 小型全自动裁切机:开启高效裁切新时代 - 工业设备
  • 2026年仿石漆生产厂家权威推荐:十大品牌技术驱动下的行业新格局! - 深度智识库
  • LeetCode HOT100 - 多数元素
  • 【RH134总结】 四
  • 使用uv下载并上传到私有仓库(支持python版本修改)
  • 2026年黑龙江口碑好的钢制护士站制造商推荐,专业定制化服务全解析 - mypinpai
  • 大理婚纱照首选推荐|芙拉薇尔:在风花雪月里,定格专属山海浪漫 - 江湖评测
  • 2026软文推广平台实测榜:传声港新媒体平台如何重构营销生态 - 博客湾
  • OpenFoam常用命令
  • 【愚公系列】《剪映+DeepSeek+即梦:短视频制作》010-剪辑:把碎片素材串联成片(速度与节奏)
  • 327万人才缺口!网络安全专业薪资曝光:这些高校毕业即拿高薪(女生也适合)
  • 分析2026年江苏实力强的屋顶防水品牌企业,怎么选择 - 工业推荐榜
  • RebCoord版本管理
  • 2026年玉米加工设备推荐:河南成立粮油机械有限公司,玉米生产线/制粉/提胚设备全系供应 - 品牌推荐官
  • 2026年江苏口碑好的屋顶防水公司推荐,专业防水服务企业全解析 - myqiye
  • 2026年3月陕西/宝鸡/西北防腐木厂家综合测评 - 2026年企业推荐榜
  • 爆火!OptiSystem 二次开发全攻略:Matlab/Python 联动仿真,解锁光通信仿真天花板
  • 程序员怎么学?看完这一篇就够了【非常详细】_程序员怎么入门
  • 远传水表厂家推荐 —— 青岛积成电子股份有限公司 - 深度智识库
  • 上下文工程的六大组件:构建高性能AI应用的核心指南
  • ## 15|Python 消息队列消费模型:幂等、重试与死信治理实战
  • 2026年中国仿石漆厂家权威报告:十大品牌深度分析差异化突围! - 深度智识库
  • 营收涨了30%,团队却更累了?别让“轻量级工具”拖垮你的集团军!
  • 说说全国精制钢专业供应商,天津澳一精工靠谱吗 - 工业品牌热点
  • 嘉辉医疗口碑怎样,了解其公司介绍与行业口碑排名 - mypinpai
  • Python爬虫实战:手把手教你如何构建 Ubuntu 安全漏洞情报中心!
  • 2026年西安AI搜索营销公司深度测评:从技术到效果的实用选型指南 - 小白条111
  • ## 16|Python 数据管道工程化:Airflow 编排与数据质量守护
  • leetcode 1422. Maximum Score After Splitting a String 分割字符串的最大得分-耗时100
  • 三亚旅拍婚纱照首选|芙拉薇尔:让你的海岛婚照,只有浪漫没有糟心 - 江湖评测