華為OD機(jī)試-最大化控制資源成本

公司創(chuàng)新實(shí)驗(yàn)室正在研究如何最小化資源成本,最大化資源利用率,請(qǐng)你設(shè)計(jì)算法幫他們解決一個(gè)任務(wù)混部問(wèn)題:有taskNum項(xiàng)任務(wù),每個(gè)任務(wù)有開(kāi)始時(shí)間(startTime),結(jié)束時(shí)間(endTime),并行度(parallelism)三個(gè)屬性,并行度是指這個(gè)任務(wù)運(yùn)行時(shí)將會(huì)占用的服務(wù)器數(shù)量,一個(gè)服務(wù)器在每個(gè)時(shí)刻可以被任意任務(wù)使用但最多被一個(gè)任務(wù)占用,任務(wù)運(yùn)行完成立即釋放(結(jié)束時(shí)刻不占用)。任務(wù)混部問(wèn)題是指給定一批任務(wù),讓這批任務(wù)由同一批服務(wù)器承載運(yùn)行,請(qǐng)你計(jì)算完成這批任務(wù)混部最少需要多少服務(wù)器,從而最大最大化控制資源成本。
輸入描述:
第一行輸入為taskNum,表示有taskNum項(xiàng)任務(wù)
接下來(lái)taskNum行,每行三個(gè)整數(shù),表示每個(gè)任務(wù)的開(kāi)始時(shí)間
(startTime ),結(jié)束時(shí)間(endTime ),并行度(parallelism)
輸出描述:
一個(gè)整數(shù),表示最少需要的服務(wù)器數(shù)量
示例1 輸入輸出示例僅供調(diào)試,后臺(tái)判斷數(shù)據(jù)一般不包含示例
輸入
3
2 3 1
6 9 2
0 5 1
輸出
2
說(shuō)明
一共有三個(gè)任務(wù),第一個(gè)任務(wù)在時(shí)間區(qū)間【2,3】運(yùn)行,占用1個(gè)服務(wù)
器,第二個(gè)任務(wù)在時(shí)間區(qū)間【6,9】運(yùn)行,占用2個(gè)服務(wù)器,第三個(gè)任
務(wù)在時(shí)間區(qū)間【0,5】運(yùn)行,占用1個(gè)服務(wù)器,需要最多服務(wù)器的時(shí)間
區(qū)間為【2,3】和【6,9】,需要2個(gè)服務(wù)器。
示例2 輸入輸出示例僅供調(diào)試,后臺(tái)判斷數(shù)據(jù)一般不包含示例
輸入
2
3 9 2
4 7 3
輸出
5
說(shuō)明
一共兩個(gè)任務(wù),第一個(gè)任務(wù)在時(shí)間區(qū)間【3,9】運(yùn)行,占用2個(gè)服務(wù)
器,第二個(gè)任務(wù)在時(shí)間區(qū)間【4,7】運(yùn)行,占用3個(gè)服務(wù)器,需要最多
服務(wù)器的時(shí)間區(qū)間為【4,7】,需要5個(gè)服務(wù)器。
備注:
1<=taskNum<=100000
0<=startTime<endTime<=50000
1<=parallelism<=100
————————————————
版權(quán)聲明:本文為CSDN博主「MISAYAONE」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://renjie.blog.csdn.net/article/details/127947805
Java 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/127947805
Python實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/127946240
C++ 實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/127941650
JavaScript實(shí)現(xiàn):https://renjie.blog.csdn.net/article/details/129016648
C語(yǔ)言版本持續(xù)更新中