最大獲利的工作安排 Most Profit Assigning Work_Leetcode #826 Greedy策略

閱讀時間約 4 分鐘

題目敘述 Most Profit Assigning Work

公司裡有n位員工,m件任務。

每位員工的能力記錄在worker陣列。

每個任務對應的能力要求和獲利紀錄在difficulty 和profit陣列。

不同的員工可以做同樣的任務。

請問怎麼分配任務可以得到整體最大獲利?


測試範例

Example 1:

Input: difficulty = [2,4,6,8,10], profit = [10,20,30,40,50], worker = [4,5,6,7]
Output: 100
Explanation: Workers are assigned jobs of difficulty [4,4,6,6] and they get a profit of [20,20,30,30] separately.

Example 2:

Input: difficulty = [85,47,57], profit = [24,66,99], worker = [40,25,25]
Output: 0

難度都超過員工能力值,沒有合適的任務。​ 

約束條件

Constraints:

  • n == difficulty.length
  • n == profit.length

總共有n個任務

  • m == worker.length

總共有m位員工。

  • 1 <= n, m <= 10^4

參數n和m都介於1~一萬之間。

  • 1 <= difficulty[i], profit[i], worker[i] <= 10^5

任務難度、任務獲利、員工能力都介於1~十萬之間。


觀察 人盡其才 Greedy策略

最大獲利 直覺想到的就是盡可能挑能力範圍內,獲利大的任務來做。

先針對每個任務依據難度從小到大排序。

每位員工也依據能力從小到大排序。


接著,針對每位員工,在他的能力範圍內,挑選獲利最大的任務來做。

這邊的思想就是(Greedy策略)局部最佳化,進一步帶來整體的最佳化


演算法 人盡其才 Greedy策略

承接觀察點的思考。

每個任務依據難度從小到大排序。

每位員工也依據能力從小到大排序。

針對每位員工,在他的能力範圍內,挑選獲利最大的任務來做。


程式碼 人盡其才 Greedy策略

class Solution:
def maxProfitAssignment(self, difficulty : List[int], profit: List[int], worker: List[int]) -> int:

# sort jobs by (difficulty, profit) pair
jobs = sorted(zip(difficulty , profit))

# sort worker by ability from small to large
worker.sort()

total_profit, job_index, max_profit = 0,0,0

# Each worker choose the job which has most profit and within ability.
for ability in worker:

while job_index < len(jobs) and jobs[job_index][0] <= ability:
max_profit = max(max_profit, jobs[job_index][1])
job_index+=1

total_profit += max_profit

return total_profit

複雜度分析

時間複雜度: O( n log n + m log m)

排序任務耗費O( n log n)

排序員工耗費O( m log m)

份配任務耗費O( m + n)

空間複雜度: O(n)

重新產生一個新的任務的(難度, 獲利)陣列,所需空間為O(n)


關鍵知識點 Greedy策略

針對每位員工,在他的能力範圍內,挑選獲利最大的任務來做

這邊的思想就是(Greedy策略)局部最佳化,進一步帶來整體的最佳化


Reference

[1] Most Profit Assigning Work - LeetCode

52會員
339內容數
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
你可能也想看
群益台灣精選高息(00919):追求殖利率最大化!是最具競爭力的高股息 ETF 嗎?投資理財內容聲明 文內如有投資理財相關經驗、知識、資訊等內容,皆為作者個人分享行為。 有價證券、指數與衍生性商品之數據資料,僅供輔助說明之用,不代表創作者投資決策之推介及建議。 閱讀同時,請審慎思考自身條件及自我決策,並應有為決策負責之事前認知。 希望您能從這些分享內容汲取投資養份,養成獨立
Thumbnail
avatar
存股計算機教練
2024-01-29
目前最大的電池動力貨櫃船在中國開始試俥中國正式命名並投入使用了兩艘被宣稱為目前建造的最大電動船舶的電池動力貨櫃船。這兩艘船是為中遠航運開發的,是該公司致力於在中國長江上建立電氣化航運網絡的一部分。
Thumbnail
avatar
倍鋭領域
2024-01-02
如何用波段創造獲利的最大效益? 出場的最佳時機?大家好,我是小股民Gumin,個人分析,請斟酌參考 想多學一點觀念可以申請小股民的社團唷~ https://www.cmoney.tw/forum/club/4064 小股民今天想分享該怎麼獲利在相對高檔的位置呢? 依小股民實戰的例子來看,11/1入手原因就是底不破低有打底完
Thumbnail
avatar
小股民Gumin
2023-11-08
新讀者看這!本專欄交易策略的最大風險在哪?要賺N倍獲利要先看懂風險 先跟大家談論風險問題 風險方面 第一、時間問題不好掌握,因為需要盯盤,特別是每週三的選擇權結算日。由於根據我目前的紀錄來看,倒莊翻倍行情發生機率佔比50%左右,可能也有一半的機會遇不到倒莊翻倍行情,因此沒有交易而被消磨掉的個人時間就是最大的機會成本,因為你的資金有一部分拿來操作本專欄的策略,
Thumbnail
avatar
賢弟的選擇權獲利引擎-劍賢
2023-07-19
本專欄交易策略的最大風險與特色在哪?要賺N倍獲利要先看懂風險 先跟大家談論風險問題,再來談本專欄交易策略的特色在哪? 風險方面 第一、時間問題不好掌握,因為需要盯盤,特別是每週三的選擇權結算日。由於根據我目前的紀錄來看,倒莊翻倍行情發生機率佔比50%左右,可能也有一半的機會遇不到倒莊翻倍行情,因此沒有交易而被消磨掉的個人時間就是最大的機會成本,因為你的資金
Thumbnail
avatar
賢弟的選擇權獲利引擎-劍賢
2023-06-23
小宅設計:潛力最大化,不再讓小空間侷限你的生活-EHO 高雄室內設計在繁華的城市中,小宅常被看作是對於居住舒適度的妥協,人們總認為小空間等同於擁擠和侷限。然而,室內設計的力量就在於此,它可以喚醒小宅的潛力,將其轉化為一個溫馨且功能強大的生活空間。本文將探討室內設計如何發掘小宅的潛力,並提供一些實用的設計建議。 相關文章:【室內設計解惑】什麼是現代簡約風?帶你領略簡約
Thumbnail
avatar
藝瓦.EHO設計
2023-06-19
【商家的終極目標】--利潤最大化︱小K投資之路商家的目標就是要把我們的消費行為變成一個習慣,這樣才能讓他們利潤最大化。不論你是在消費性電子行業、食品業、金融服務業,大部分顧客的行為也是潛意識習慣引申出來的。 很多人習慣在早上都會喝一杯咖啡,不論是在連鎖咖啡店,還是茶餐廳,這已經成為了人們生活的一部分。 【個人網站】 【加密貨幣】 【被動收入】
Thumbnail
avatar
小K投資理財之路
2022-02-28
經營管理的世界《微型企業篇》05--01--經營穩定期01:「獲利」最大化【前言】 當一家「新創企業」進入了穩定期~筆者認為:階段性的目標,應該是「獲利」最大化!   「獲利」最大化~筆者認為:一點都不奇怪!  上班族,想加薪~不一定會如老闆的意願;但一般人都不會覺得奇怪呀!  那麼,企業想要賺更多~又有啥好奇怪的!  (若嫌錢賺得太多~也是等錢賺進來後,再分出去!)  
avatar
王忠華
2021-07-17
國泰金控,擁有國泰人壽與國泰世華銀行兩大獲利引擎,是台灣最大的金融控股公司!台灣最大的金融控股公司,國泰金控,股票代號 2882   國泰金的子公司陣容也相當龐大,一樣具有銀行、證券、保險三大事業體  其營業占比最高的是國泰人壽與國泰世華銀行,且占比相當高   從基本面再到技術面,就讓我們看下去吧!
Thumbnail
avatar
股海的諾亞方舟
2021-07-11
#46《哈佛商學院的雙贏談判課》(中):克服談判偏誤,為自己帶來最大獲利!#46《哈佛商學院的雙贏談判課》(中):克服談判偏誤,為自己帶來最大獲利!作為談判者的我們應該要理解,談判過程中雙方可能是不理性的,這些談判時的心理狀態或偏見會導致人們無法理性衡量最大利益,所以在談判時要把偏誤納入考慮。至於談判中有哪些偏誤。現在我們就一起來看下去吧!
Thumbnail
avatar
DTBar 喝吧!
2021-04-09