U629374 最小等待时间 (waiting)
题目描述
Gaffice的银行有 $n$ 个客户,第 $i$ 个客户在 $arrive_i$ 时刻到达,需要 $need_i$ 分钟办理业务。银行有 $k$ 个窗口,Gaffice希望安排客户到窗口,使得所有客户的总等待时间最小。
等待时间定义:对于客户 $i$,如果他在 $start_i$ 时刻开始办理业务,则等待时间为 $start_i - arrive_i$。
注意:
1. 客户按到达时间顺序排队(先到先服务)
2. 每个窗口每次只能为一个客户服务
3. 当有窗口空闲时,队列中最前面的客户会立即前往该窗口
4. 如果多个窗口同时空闲,客户会选择编号最小的窗口
输入格式
第一行两个整数 $n$, $k$.分别表示客户数量和窗口数量
接下来 $n$ 行,每行两个整数 $arrive_i$, $need_i$
数据保证按到达时间非递减顺序给出(即 $arrive_i ≤ arrive_{i+1}$)
输出格式
输出一个整数,表示所有客户的总等待时间
说明/提示
**样例1解释:**
- 客户1:0时刻到达,0时刻开始,等待0分钟
- 客户2:1时刻到达,3时刻开始(窗口被客户1占用),等待2分钟
- 客户3:2时刻到达,5时刻开始,等待3分钟
- 总等待时间 = 0 + 2 + 3 = 5
**样例2解释:**
窗口1:客户1(0-3), 客户3(3-4), 客户5(6-8)
窗口2:客户2(1-3), 客户4(4-9)
等待时间:客户1:0, 客户2:0, 客户3:1, 客户4:0, 客户5:0
总等待时间 = 1
## 数据范围
| 数据点 | n 的范围 | k 的范围 | 到达时间范围 | 办理时间范围 | 特殊性质 |
| :----- | :------------ | :----------- | :---------------- | :-------------- | :--------------- |
| 1-2 | 1 ≤ n ≤ 100 | 1 ≤ k ≤ 10 | 0 ≤ arrive ≤ 100 | 1 ≤ need ≤ 10 | 所有客户同时到达 |
| 3-4 | 1 ≤ n ≤ 1000 | 1 ≤ k ≤ 50 | 0 ≤ arrive ≤ 1000 | 1 ≤ need ≤ 100 | 无 |
| 5-6 | 1 ≤ n ≤ 10⁴ | 1 ≤ k ≤ 100 | 0 ≤ arrive ≤ 10⁴ | 1 ≤ need ≤ 1000 | 到达时间严格递增 |
| 7-8 | 1 ≤ n ≤ 10⁵ | 1 ≤ k ≤ 1000 | 0 ≤ arrive ≤ 10⁶ | 1 ≤ need ≤ 10⁴ | 无 |
| 9-10 | 1 ≤ n ≤ 5×10⁵ | 1 ≤ k ≤ 5000 | 0 ≤ arrive ≤ 10⁹ | 1 ≤ need ≤ 10⁴ | 大数据 |