讀入任務排程序列,輸出n個任務適合的一種排程方式。
輸入包含多組測試資料。
每組第一行輸入乙個整數n(n<100000),表示有n個任務。
接下來n行,每行第乙個表示前序任務,括號中的任務為若干個後序任務,表示只有在前序任務完成的情況下,後序任務才能開始。若後序為null則表示無後繼任務。
輸出排程方式,輸出如果有多種適合的排程方式,請輸出字典序最小的一種。
4
task0
(task1,task2)
task1
(task3)
task2
(null
)task3
(null
)
task0 task1 task2 task3
1.這道題目我們需要乙個結構體型別的優先佇列,和乙個對映map
2. 思路:可以在結構體中過載運算子 < 對佇列中的結構體變數進行排序,處理後的佇列輸出即可,
3. 先弄出完整的帶過載運算子函式的結構體來:
struct mytask
};
然後寫出處理函式,判斷輸入的任務後面是否還有任務,如果有任務就把後面每乙個任務對應的map 對映自增(使他們的優先順序變大)。最後把當前任務的優先順序從map中獲取出來,把對應的結構體壓入佇列,
這樣處理後,佇列排成了按照優先順序從小到大排列
code::
#include
#include
#include
#include
using
namespace std;
struct mytask};
mapint> mp;
priority_queue q;
void
myfun
(string &str)
} mytask.priority=mp[mytask.name]
; q.
push
(mytask);}
intmain()
int len=q.
size()
;for
(int i=
0;i}
201403 5 任務排程
問題描述 有若干個任務需要在一台機器上執行。它們之間沒有依賴關係,因此 可以被按照任意順序執行。該機器有兩個 cpu 和乙個 gpu。對於每個任務,你可以為它分配不 同的硬體資源 1.在單個 cpu 上執行。2.在兩個 cpu 上同時執行。3.在單個 cpu 和 gpu 上同時執行。4.在兩個 cp...
621 任務排程器
621.任務排程器 給定乙個用字元陣列表示的 cpu 需要執行的任務列表。其中包含使用大寫的 a z 字母表示的26 種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。cpu 在任何乙個單位時間內都可以執行乙個任務,或者在待命狀態。然而,兩個相同種類的任務之間必...
621 任務排程器
給你乙個用字元陣列 tasks 表示的 cpu 需要執行的任務列表。其中每個字母表示一種不同種類的任務。任務可以以任意順序執行,並且每個任務都可以在 1 個單位時間內執行完。在任何乙個單位時間,cpu 可以完成乙個任務,或者處於待命狀態。然而,兩個 相同種類 的任務之間必須有長度為整數 n 的冷卻時...