Skip to content

Latest commit

 

History

History

1792.Maximum-Average-Pass-Ratio

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

1792.Maximum-Average-Pass-Ratio

最终的输出是ret = max(r1+r2+...+rn)/n。如果给你一个优秀学生的名额,你会怎么使用?你肯定会把ta加入到增长最多的那个r所对应的班级里去。因此,我们使用一个优先队列,按照dr = (p+1)/(t+1)-p/t排序,队首元素所对应的班级就是优先添加优秀学生的班级。

那么有没有可能这样一个接着一个贪心的策略不是最优的呢?举个例子,假如最优解是先给A班加1人,再给B班加1人;那么我们直接给B班加两人,会不会效果更好呢?简单的推理可以知道这是不可能的。前者的效果等效于:先给B班加1人,再给A班加1人;后者的效果等效于:先给B班加一人,再给B班加一人。于是我们需要比较的是 (p1+1)/(t1+1) - p1/t1(p2+2)/(t2+2) - (p2+1)/(t2+1)哪个更大。注意到后者小于(p2+1)/(t2+1) - p2/t2,必然也小于前者。所以一次安排两个人或以上不会是最优解。