題目鏈結
題意:有n個命令,給定每個命令的 序號,最早開始時間(到達時間),需要持續的時間,優先順序
某一時刻,當有多個命令都可以被解決時,優先選擇優先順序大的,如果優先順序一樣,優先選擇最早開始時間早的執行
輸出 n個命令被完成的時間(按被完成的從早到晚排序)
思路:每到乙個命令的開始時間,就把這個命令扔到優先佇列中,並判斷這個時間到上乙個命令到達這一段時間中執行命令的情況
優先佇列先按照優先順序從大到小排序,然後按照開始時間從早到晚排序
**:
#include
using namespace std;
typedef
long
long ll;
const ll maxn =
10000005
;struct hh
} k[maxn]
;priority_queue que;
intmain()
if(i !=1)
else}if
(que.
empty()
!=0) pret = nowt;
que.
push
(k[i]);
} i++;}
if(i ==2)
printf
("%lld %lld\n"
, k[1]
.num, k[1]
.t1 + k[1]
.t2)
;else
}}
HNOI2003 作業系統(優先佇列 模擬)
hnoi2003 作業系統 題目概述 假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用自然數表示,數字越大,則優先順序越高。如果乙個程序到達的時候cpu是空閒的,則它會一直占用cpu直到該程序結束。除非在這個過程中,有乙個比它優先順序高的程序要執行...
HNOI2003 作業系統(優先佇列,堆排序)
寫乙個程式來模擬作業系統的程序排程。假設該系統只有乙個cpu,每乙個程序的到達時間,執行時間和執行優先順序都是已知的。其中執行優先順序用自然數表示,數字越大,則優先順序越高。如果乙個程序到達的時候cpu是空閒的,則它會一直占用cpu直到該程序結束。除非在這個過程中,有乙個比它優先順序高的程序要執行。...
HNOI2003 作業系統
用優先佇列q來模擬我們的cpu,最開始時,cpu中沒有程序,因此,我們把第乙個程序放進去,第二個程序進來時會有選擇,有幾種可能,要進入的程序的開始時間在前面那個程序結束時間之後,我們相當於可以直接完場此時cpu中的程序,將時間節點更新當前結束時間,第二種情況,當前cpu中程序的結束時間在要進來的這個...