小红正在为一批大模型推理任务配置计算服务器。共有 n 个任务,第 i 个任务需要完成 a_i 单位计算量,所有任务必须在 h 个小时内结束。 小红会同时启用 k 台服务器。每台服务器每小时能够完成 1 单位计算量,但同一个小时内,所有服务器只能共同处理同一个尚未完成的任务。如果该任务剩余的计算量小于 k ,多余的服务器会在这一小时闲置,任务仍要占用完整的一个小时。 请计算至少需要同时启用多少台服务器,才能在 h 个小时内完成所有任务。如果无论启用多少台服务器都无法按时完成,请输出 -1 。
第一行输入一个整数 n 。 第二行输入 n 个整数 a_1,a_2,...,a_n 。 第三行输入一个整数 h 。 保证 1 ≤ n ≤ 1000 , 1 ≤ a_i ≤ 1000007 , 1 ≤ h ≤ 1000007 。
输出一个整数,表示满足要求的最少服务器数量;如果不存在可行配置,则输出 -1 。
3 5 9 10 8
4
考点:二分
数据规模 n ≤ 1e3 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:二分
本题切入点
二分服务器数 k:给定 k 时每个任务需 ceil(a_i/k) 小时(同一小时内所有服务器只能服务同一任务),总耗时 Σceil(a_i/k) ≤ h 即可行;取下界,h 太小则 −1。
把「求最优值」转化为「判定某值是否可行」,用单调性二分逼近答案。
思路框架(二分 通法 · 非本题专属)
实现要点:模板:while (lo < hi) { mid = (lo+hi)/2; if (check(mid)) hi = mid; else lo = mid+1; } 求最小可行值。
复杂度:时间 O(check 的代价 × log(答案范围)) | 空间 O(1)
该范式的通法易错点
对照本题
样例 1:输入 3 / 5 9 10 / 8 → 输出 4
启用 4 台服务器时,三个任务分别需要 2 、 3 、 3 小时,总计恰好为 8 小时。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-05月20号开发岗。