洛谷P2278 HNOI2003 作業系統

2022-05-05 16:30:09 字數 680 閱讀 3447

主要思路:模擬,優先佇列

考慮維護乙個優先佇列,過載小於號,對於這個小於號的定義為如果兩個工作等級相同,那麼按照到達時間先後排序,否則按照工作等級高低排序

然後每輸入乙個工作,考慮在這個工作執行之前所有可以被完成的工作,當已經不存在可以被完成的工作但佇列非空的時候,表示目前的工作只能被完成一部分,那麼處理這個部分並更新當前時間和這個工作完成需要的時間

對於在輸入結束後還沒有被完成的工作,其已經在優先佇列中按照順序排序,只需要從隊頭開始完成並輸出即可

注意點:

1.優先佇列中定義的是小於號,相關大小比較需要相反

2.scanf在成功輸入時的返回值是輸入個數,失敗時返回值是-1;

#include#include

#include

using

namespace

std;

struct

node

};node pre;

int a,b,c,d,tnow=0

;priority_queue

q;int

main()

if(!q.empty())

q.push(pre);

tnow=pre.rea;

}

while(!q.empty())

return0;

}

洛谷 P2278 HNOI2003 作業系統

寫乙個程式來模擬作業系統的程序排程。假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用自然數表示,數字越大,則優先順序越高。如果乙個程序到達的時候cpu是空閒的,則它會一直占用cpu直到該程序結束。除非在這個過程中,有乙個比它優先順序高的程序要執行。...

洛谷 P2278 HNOI2003 作業系統

題目描述 寫乙個程式來模擬作業系統的程序排程。假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用自然數表示,數字越大,則優先順序越高。如果乙個程序到達的時候cpu是空閒的,則它會一直占用cpu直到該程序結束。除非在這個過程中,有乙個比它優先順序高的程...

P2278 HNOI2003 作業系統

寫乙個程式來模擬作業系統的程序排程。假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用自然數表示,數字越大,則優先順序越高。如果乙個程序到達的時候cpu是空閒的,則它會一直占用cpu直到該程序結束。除非在這個過程中,有乙個比它優先順序高的程序要執行。...