华为OD机试真题 新系统 2026-07-01 C++ 实现【收集灵草】
📅 2026/7/13 21:44:42
👁️ 阅读次数
📝 编程学习
目录
题目
思路
Code
题目
在一个远古修士的洞穴中,探宝者发现了一排共 N 棵灵草,每棵灵草有一个灵力值 A,灵力值可为正、负或零。
为避免灵草被探宝者一扫而空,远古修士设置了禁制,要求探宝者必须选择一段连续的灵草序列带回,且必须满足以下规则:
规则一:选中的连续序列中,灵力值为正的数量不少于 K 棵。
规则二:在满足规则一的前提下,探宝者还可以从选中序列中额外挑选最多 M 棵灵力值为负的灵草丢弃,以提升总收益。
求所有合法选择方案中,能够带走的灵草的灵力值总和的最大值。如果无法满足规则一,输出 -1。
数据范围:
1 <= N <= 10^4
1 <= K <= N
0 <= M <= 5
-10^9 <= A <= 10^9
输入描述
输入格式:
N K M
a1 a2 a3 ... aN
其中:
N 表示灵草数量。
K 表示至少需要选择的正数灵草数量。
M 表示最多可丢弃的负数灵草数量。
a1 a2 ... aN 表示灵草灵力值数组。
输出描述
输出合法选择方案中,带走灵草的最大灵力值总和;如果不存在正灵力值数量不少于 K 的连续序列,输出 -1。
样例 1(按公开题意构造)
输入:
7 2 1
编程学习
技术分享
实战经验