LeetCode周赛题--有关任务调度的贪心问题
Posted C_YCBX Py_YYDS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode周赛题--有关任务调度的贪心问题相关的知识,希望对你有一定的参考价值。
题目
有点像操作系统的任务调度。
解题思路
- 完成全部任务的情况:
我们假设最大任务量刚好与剩余任务总量相等,那么此时可以以(1次最大任务 + 1次剩余任务)搭配完成全部任务。若最大任务量小于剩余任务总量,那么我们以同样的方式搭配,最终会有多余的剩余任务,我们对剩余任务继续按照其中的最大值搭配,最终也是能够完成全部任务的。 - 只能完成部分任务的情况:
当我们的最大任务量大于剩余任务量,则无论怎么搭配都无法完成所有任务,最终总会剩余最大任务量-剩余任务量,所以此时完成的任务量为 2*sum+1(先完成最大的,再完成其他的,然后最后又回到最大的完成一次,就没有其他的可以完成了)
解题代码
class Solution {
public:
long long numberOfWeeks(vector<int>& milestones) {
using ll = long long;
ll sum = 0;
ll mx = 0;
for(const auto& t:milestones){
sum += t;
mx = max(mx,(ll)t);
}
if(sum-mx<mx)
return 2*(sum-mx)+1;
return sum;
}
};
以上是关于LeetCode周赛题--有关任务调度的贪心问题的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 双周赛 101,DP/中心位贪心/裴蜀定理/Dijkstra/最小环
LeetCode 第 58 场力扣夜喵双周赛(动态规划马拉车算法,前后缀处理)/ 第 253 场力扣周赛(贪心,LIS)
LeetCode 第252场周赛(贪心,平方和公式,子序列动态规划)