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