这道题基本思路就是贪心(标签里的队列是什么鬼不会是因为标题叫队列吧)
主要还是证明贪心的正确性(大佬勿喷)
设总等待时间为 $time$ , $n$个人等待时间分别为$t_{1}$,$t_{2}$,$t_{3}$···$t_{n}$,要使总等待人数最少,则$time$
要取最小值:
$time$ = $t_{1}$+($t_{1}$+$t_{2}$)+($t_{1}$+$t_{2}$+$t_{3}$)+···+($t_{1}$+$t_{2}$+$t_{3}$+···$t_{n}$)
$time$ = $n \cdot t_{1}$+ $(n-1)\cdot t_{2}$+ ··· + $t_{n}$
当$t_{1} \le $ $t_{2} \le$ ······ $t_{n}$ 时,$time$为最小值(简单的证明过程)
——————————————————————————————————————————
所以只要先每个人的等待时间排序一遍,设定一个总时间变量$time$,只要$time$小
于这个人的等待时间答案就+1,同时$time$也要加上这个人的等待时间
代码
1 |
|