小红管理一个有 m 个窗口的取餐区。初始有 n 位顾客按编号 0 到 n-1 排队,每位顾客需要领取若干份餐品。每个窗口每秒服务队首的一位顾客并交付一份;若顾客仍有需求,他会排到队尾,否则离开。 每秒开始时,按窗口编号从小到大把队首顾客分给空闲窗口。由于一次服务恰好一秒,同一秒服务结束后,仍有需求的顾客也按窗口编号从小到大重新入队。求编号 k 的顾客完成领取的时刻。
第一行输入 n 个正整数表示每位顾客的需求量,第二行输入 k ,第三行输入 m 。 保证 1≤ n≤101 ,每份需求在 [1,100] , 0≤ k<n , 1≤ m≤10 。
输出目标顾客完成领取所需的秒数。
2 1 2 2 2
3
5 3 3 1 4 2 3
4
考点:队列
数据规模 n ≤ 101 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:队列
先进先出的结构,用于模拟排队过程或配合 BFS/单调队列。
思路框架(队列 通法 · 非本题专属)
实现要点:from collections import deque;popleft() 是 O(1)。
复杂度:时间 O(n) | 空间 O(n)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 2 1 2 / 2 / 2 → 输出 3
目标顾客在第 3 秒完成第二次服务。
样例 2:输入 5 3 3 1 4 / 2 / 3 → 输出 4
按队列轮转模拟,编号 2 的顾客在第 4 秒完成。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-06月24号开发岗。