求优化时间复杂度
  • 板块学术版
  • 楼主_8008008
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/10/13 19:28
  • 上次更新2023/11/2 14:05:30
查看原帖
求优化时间复杂度
803885
_8008008楼主2023/10/13 19:28

题目:

有 nn 个工人,第 ii 个工人的初始效率值为 aia_i 。
有 mm 个工作,第 ii 个工作需要恰好 kik_i 个工人来完成。
你可以分配工人去完成工作,一个工人可以参加多个工作,但不能重复参加一个工作。当一个工人参加一个工作时,你会获得等同于这个工人当前效率值的收益,然后这个工人效率值减 11 。
输出完成所有任务所能获得的最大收益。


先排序 aa
每次(共 mm 次)aa 使用完( aa 前 kik_i 项 −1-1 ,将答案+西格玛j=1j≤kiaj西格玛_{j=1}^{j \le k_i}a_j)变成两个不降单调序列 其中前面一个单调序列队尾+1大于另一个单调队列的队头 这时可以log⁡n+n\log n+n 排序
时间复杂度 O(m(n+log⁡n)+西格玛j=1j≤kmaj∗m)O(m(n+\log n)+西格玛_{j=1}^{j \le k_m}a_j*m)
n,m,ki,ai≤105n,m,k_i,a_i \le 10^5

2023/10/13 19:28
加载中...