在星际纪元 2333 年,您是“星尘港务局”最先进的交通调度AI。 您负责管理银河系中最繁忙的垂直太空港——“天穹站”。 空间站从上到下共分为 F 个停泊层级,每个层级都配备了 M 个标准化的无人对接泊位。 每天,数以万计的星舰涌入“天穹站”的管辖空域,提交停泊申请。 您的核心任务是以最低的能源消耗,最高效地为这些星舰分配泊位。 星舰的停泊规则非常特殊: 停泊分配 :每艘星舰 i 的申请中会包含一个 首选停泊层级 R_i 和一个 船员人数 P_i 。根据空间站的设计,星舰只能被安排在其首选层级 R_i 或 其下方的任意层级(直至最底部的1层)。 能源消耗计算 :为一次停泊分配计算总能耗是您的关键绩效指标(KPI)。总能耗由两部分构成: 1. 基础能耗 :无论在哪一层停泊,仅对接过程本身就需要消耗 2 个单位的能量。 2. 调度能耗 :如果一艘星舰被安排在低于其首选层级的位置,为了转运船员和货物,每向下一层,就需要额外消耗 1 个单位的能量。 总能耗公式 :对于一艘首选层级为 R_i ,最终停在 A_i 层 ( A_i ≤ R_i ),载有 P_i 名船员的星舰,其单次任务能耗为: P_i × (2 + (R_i - A_i)) 。 任务目标 :您的目标是为所有 N 艘申请的星舰找到一个停泊方案,使得 总能耗(所有星舰的能耗之和)达到最小值。 异常情况 :如果泊位总数不足以容纳所有申请的星舰,调度计划无法完成,此时应报告异常,输出 -1 。
第一行包含三个整数 F, M, N 。 F :空间站的总层级数 ( 1 ≤ F ≤ 1000 )。 M :每层的泊位数 ( 1 ≤ M ≤ 100 )。 N :总共收到的星舰停泊申请数 ( 1 ≤ N ≤ 100000 )。 接下来 N 行,每行包含两个整数 R_i, P_i 。 R_i :第 i 艘星舰的首选停泊层级 ( 1 ≤ R_i ≤ F )。 P_i :第 i 艘星舰的船员人数 ( 1 ≤ P_i ≤ 50 )。
输出一个整数,表示能够实现的最低总能耗。 如果无法为所有星舰安排泊位,则输出 -1 。
3 3 4 2 20 1 10 2 10 2 10
100
1 1 2 1 10 1 20
-1
考点:贪心
数据规模 N ≤ 1e5 | 限制 3 秒 / 256MB | 标准输入输出
推荐方向:贪心
本题切入点
从最高层往低层分配:同一层内优先安排 P_i 大的星舰(每向下一层每人多消耗 1),借助堆/有序结构按 R_i 逐层处理可得最小总能耗;泊位不足则 −1。
每一步都取当前最优,靠问题性质保证局部最优能拼成全局最优。
思路框架(贪心 通法 · 非本题专属)
实现要点:贪心题关键在于排序规则:按什么关键字排序决定了策略是否正确。
复杂度:时间 O(n log n)(含排序) | 空间 O(1) ~ O(n)
该范式的通法易错点
对照本题
样例 1
3 3 4 / 2 20 / 1 10 / 2 10 / 2 10100样例 2
1 1 2 / 1 10 / 1 20-1解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2025年秋招-华为-11月05号开发岗。