Skynet Cyberdyne Corp. 設計了一台有上萬個處理器的超級電腦,這部電腦需要一個排程系統來將大量的即時性工作分配給不同的處理器來執行。
所謂的即時性工作,指的是一個工作會有指定的處理時段:以「開始時間
一個即時性工作只能分配給一個處理器。每個處理器在每個時間點都只能處理一個工作,所以處理時間沒有重疊的工作才可以分配給同一個處理器來執行。例如,假設現在有三個工作 A、B、C,它們的「開始時間」和「結束時間」如下表所示:
工作 | 開始時間 | 結束時間 | 工作類型 |
A | 3 | 5 | 即時 |
B | 1 | 3 | 即時 |
C | 7 | 9 | 即時 |
在這個例子裏,我們可以將工作 A 和 C 分配給一顆處理器,然後將工作 B 分配給另一顆處理器,用兩顆處理器就可以完成這三件工作。請注意,工作 A 和 B 不能分配給同一顆處理器,因為它們在時間點 3 重疊。
除了即時性工作以外,另外一種常見的工作我們稱為「非即時性工作」:以「工作長度
讓我們來看另一個例子:假設現在有三件工作 D、E、F,它們的參數如下:
工作 | 工作類型 | ||
D | 即時 | ||
E | 非即時 | ||
F | 非即時 |
那麼使用兩顆處理器可以順利完成所有工作:第一顆在前 6 個時間點分別執行:E, D, D, D, D, E;第二顆在前 6 個時間點分別執行:F, E, F, F, F, X(休息)。
請完成一個程式,計算一批工作最少需要用到幾個處理器。
第一行有一個非負整數 n,代表即時性工作的數目。下面接著 n 行,每一行有兩個正整數
時間點皆由 1 開始計算。
子任務(測資) | 額外限制 | 分數 |
1 (0~3) | 15 | |
2 (0~7) | 28 | |
3 (8~11) | 9 | |
4 (12~15) | 11 | |
5 (0~19) | 37 |
輸出一行,只包含一個數字,代表最少需要使用到的處理器個數。
3 3 5 1 3 7 9 0
2
10 1 5 2 3 2 6 6 12 4 11 6 9 10 14 11 15 15 17 14 20 0
4
題目取自2017 TOI選訓第三次模擬考pA
Problem set by Yihda Yol
No. | Testdata Range | Score |
---|---|---|
1 | 0~3 | 15 |
2 | 0~7 | 28 |
3 | 8~11 | 9 |
4 | 12~15 | 11 |
5 | 0~19 | 37 |