一位农业科学家正在评估一块狭长试验田的生产潜力。这块试验田被划分为 n 个连续的地块,每个地块都有一个特定的“肥力指数”。 当一组连续的地块被用来种植同一种作物时,整个组的最终产出受到该组中肥力最差的那个地块的限制。这种效应可以用一个“产出系数”来量化,其计算公式为: 产出系数 = 组内最低肥力指数 × 组内地块数量 作为项目负责人,你需要分析所有可能的连续地块组合,计算它们的产出系数,并找出其中可能达到的最大值,以制定最优的种植计划。 给定一个正整数数组 F ,代表了一系列连续地块的肥力指数。你需要计算所有连续非空地块组合的产出系数,并返回其中的最大值。 连续非空地块组合:指一组在原序列中相邻的地块。例如,肥力指数序列为 [10, 20, 30] 的组合包括: - [10]、[20]、[30] - [10, 20]、[20, 30] - [10, 20, 30]
- 第一行:一个整数 n ,表示地块的总数,其中 1 ≤ n ≤ 10^4 。 - 接下来 n 行:每行一个整数,代表第 i 个地块的肥力指数 F_i ,其中 1 ≤ F_i ≤ 10^4 。
- 输出一个整数,代表所有连续组合中可以达到的最大产出系数。
8 51 50 50 1 14 32 15 2
150
考点:栈
数据规模 n ≤ 1e4 | 限制 3 秒 / 256MB | 标准输入输出
推荐方向:栈
本题切入点
「区间最小值 × 区间长度」的最大值:用单调递增栈对每个元素求出它作为最小值能向左/右扩展到的最远边界,再取 max(a[i]·(r−l+1)),O(n)。
后进先出的结构天然适合处理嵌套、匹配与「最近的更大/更小」问题。
思路框架(栈 通法 · 非本题专属)
实现要点:Python 用 list 当栈(append/pop);判断栈空再取栈顶。
复杂度:时间 O(n) | 空间 O(n)
该范式的通法易错点
对照本题
样例 1
8 / 51 / 50 / 50 / 1 / 14 / 32 / 15 / 2150解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-10月10号开发岗。