您將得到一組n工作。每項工作都與起始時間和結束時間相關聯,均以整數表示,並且您可以從中獲利。您必須確定採取哪些工作來實現利潤最大化,同時請記住,任何時候只能完成一項工作。有沒有一種算法,這比O(ñ)效率?事件安排
Q
事件安排
-1
A
回答
0
該算法:
鑑於集合S = {I1,I2,...,IN}:
- 排序根據從低到高的開始時間S中的間隔。
現在我們已經命令集{J1,J2,...,Jn}。 (以W1,W2,...,Wn作爲利潤)
我們將(i)定義爲最小指數k,這樣的起始時間Jk高於Ji的結束時間。如果沒有人存在,則返回-1。
將D [i]表示爲集合{Ji,Ji + 1,...,Jn}中的最大利潤(如您所述)。
所以我們得到:
D[-1] = 0;
D[i] = maximum{D[i+1],Wi + D[a(i)]}.
- 返回d [0]。
運行時間:
排序N個區間 - O(nlogn)。
構造D-O(n)。
整體運行時間= O(nlogn)。
+0
感謝d建議:) – nightrider
0
您描述的問題稱爲加權間隔調度,可以在O(nlogn)步驟中解決 - 如果作業已經排序,甚至可以解決O(n)。
快速谷歌搜索將爲您提供所有您需要的信息。
相關問題
- 1. Mysql日程安排事件
- 2. 在MySQL中安排事件
- 3. 在Android中安排事件
- 4. 安排單火事件
- 5. 在Linux中安排事件
- 6. 在android中安排事件
- 7. 安排Android圖形事件
- 8. 在春天安排事件
- 9. 在Python中安排重複事件
- 10. 在WSGI框架中安排事件
- 11. 如何安排PHP中的事件
- 12. Android:剩餘時間安排事件
- 13. 使用EV爲以後安排事件
- 14. 如何使用msql來安排事件
- 15. 安排重複報警/事件
- 16. 在c#中安排一個事件?
- 17. 如何安排電話通話事件?
- 18. 安排事件的最佳方式
- 19. 處理HL7重新安排事件
- 20. 使用AlarmManager使用ELAPSED_REALTIME安排事件
- 21. 如何安排apache cordova上的事件?
- 22. 在Ruby on Rails中安排事件
- 23. FullCalendar.js - 安排在可編輯事件源後面的日程安排
- 24. 事件排序
- 25. 排序Fullcalendar事件
- 26. DatagridColumn排序事件?
- 27. jQuery事件排序
- 28. 排隊域事件
- 29. primefaces安排:在移動編輯事件細節/調整事件偵聽器
- 30. 排隊事件:事件::沒有找到
你是指'O(n^2)'? – elyashiv
是的我有一個解決方案,它是O(n^2)。使用地圖根據開始和結束時間進行排序,然後迭代和更新,bt時間限制超過。我需要更好的東西 – nightrider
歡迎來到Stack Overflow!你的問題對於這個網站有點太廣泛了。我們專注於這裏的具體問題,而不是爲一般任務提供完整的解決方案。你能告訴我們你現有的解決方案嗎?它會給我們提供建議的起點。 – Pops