题目:
有 n 个工人,第 i 个工人的初始效率值为 ai 。
有 m 个工作,第 i 个工作需要恰好 ki 个工人来完成。
你可以分配工人去完成工作,一个工人可以参加多个工作,但不能重复参加一个工作。当一个工人参加一个工作时,你会获得等同于这个工人当前效率值的收益,然后这个工人效率值减 1 。
输出完成所有任务所能获得的最大收益。
先排序 a
每次(共 m 次)a 使用完( a 前 ki 项 −1 ,将答案+西格玛j=1j≤kiaj)变成两个不降单调序列 其中前面一个单调序列队尾+1大于另一个单调队列的队头 这时可以logn+n 排序
时间复杂度 O(m(n+logn)+西格玛j=1j≤kmaj∗m)
n,m,ki,ai≤105