)
收集灵草2026 华为OD机试真题 7月1日华为OD上机新系统考试真题200 分题型点击查看华为 OD 机试真题完整目录2026最新华为OD机试新系统卷 双机位C卷 真题题库目录全覆盖题库 逐点算法考点详解题目描述在一个远古修士的洞穴中探宝者发现了一排共N棵灵草每棵灵草有一个灵力值A灵力值可为正、负或零。为避免灵草被探宝者一扫而空远古修士设置了禁制要求探宝者必须选择一段连续的灵草序列带回且必须满足以下规则规则一选中的连续序列中灵力值为正的数量不少于K棵。规则二在满足规则一的前提下探宝者还可以从选中序列中额外挑选最多M棵灵力值为负的灵草丢弃以提升总收益。求所有合法选择方案中能够走灵草的灵力值总和的最大值。如果无法满足规则一输出-1。数据范围1 N 10^41 K N0 M 5-10^9 A 10^92026 华为OD机试真题 7月1日华为OD上机新系统考试真题200 分题型输入描述输入格式N,K,M,[a1,a2,a3,...,aN]其中N表示灵草数量K表示至少需要选择的正数灵草数量M表示最多可丢弃的负数灵草数量[a1,a2,...,aN]表示灵草灵力值数组输出描述输出一个整数表示最大灵力值总和若不存在满足条件的连续子序列则输出-1。示例1输入8323,-5,4,-1,2,-8,6,-2输出14说明选中序列[3,-5,4,-1,2,-8,6]下标1~7灵力值为正的灵草有3、4、2、6共4棵且 K3满足规则一。该序列总和 3 (-5) 4 (-1) 2 (-8) 6 1。丢弃最多M2棵负灵力值灵草选-8和-5丢弃剩余总和 1 - (-8) - (-5) 14。示例2输入541-1,-2,3,-4,5输出-1说明任意连续子序列中正灵力值灵草最多只有3棵如[1,-2,3,-4,5]中正值为1、3、5无法达到K4。解题思路核心思想双指针枚举区间 小顶堆维护最大M个负数绝对值 1. 枚举所有可能的连续子数组 [l, r] 2. 维护当前区间的正数个数 3. 用小顶堆维护当前区间最大的 M 个负数的绝对值之和 4. 当正数个数 K 时计算 cur_sum neg_sum丢弃负数后的实际收益算法步骤预处理统计全局正数个数如果不足 K 直接返回 -1外层循环枚举左端点 l内层循环枚举右端点 r逐步扩展区间维护正数计数和负数小顶堆当正数个数 K 时更新答案 ans max(ans, cur_sum neg_sum)复杂度分析时间复杂度O(N²)双指针遍历所有区间空间复杂度O(M)堆的大小