合法的pay group里所有worker的比例是一样的,即 wage1/wage2 = quality1/quality2
推出 wage1/quality1 = wage2/quality2。
这就好办了,定义 ratio_i = wage_i/quality_i。对于一个group,ratio一定是所有人中最大的那个。
对于一个大小为k的group,需要pay的钱就是 Σ_k quality_i * 最大的ratio。
为了避免每次扫一遍group找到最大的ratio,我们根据ratio排序,根据ratio从小到大考虑。同时我们建立一个大小为k的大顶堆,并保证当前堆里的元素除了当前ratio,是最小的k-1个元素。
原文地址:https://www.cnblogs.com/hankunyan/p/11485028.html
时间: 2024-11-08 08:00:05