優先佇列 牛客 HNOI2003 作業系統

2021-09-26 23:55:27 字數 816 閱讀 3023

題目鏈結

題意:有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中程序的結束時間在要進來的這個...