codeup 優先佇列 問題 A 任務排程

2021-10-22 13:14:44 字數 1166 閱讀 9762

題目描述

讀入任務排程序列,輸出n個任務適合的一種排程方式。

輸入

輸入包含多組測試資料。

每組第一行輸入乙個整數n(n<100000),表示有n個任務。

接下來n行,每行第乙個表示前序任務,括號中的任務為若干個後序任務,表示只有在前序任務完成的情況下,後序任務才能開始。若後序為null則表示無後繼任務。

輸出

輸出排程方式,輸出如果有多種適合的排程方式,請輸出字典序最小的一種。

樣例輸入 copy

4task0(task1,task2)

task1(task3)

task2(null)

task3(null)

樣例輸出 copy

task0 task1 task2 task3

**

#include#include#include#includeusing namespace std;

mapmp;

struct task

return a.name > b.name;//優先順序相同則按字典序排列

}};priority_queueq;

int range;//標識當前等級

void deal(string str)

task0 = word;

if (!mp[word])

word.clear();

i++;//還要加一是因為要跳過左括號

while (i < str.length() && str[i] != ',' && str[i] != ')')

if (word == "null") return;

if (!mp[word]) else mp[word] = mp[task0] - 1;

word.clear();

i++;

}int main()

for (map::iterator i = mp.begin(); i != mp.end(); i++)

while (q.empty() != 1) else

q.pop();}}

return 0;

}

任務系統提醒(優先佇列)

設計了乙個任務系統。這個系統是為了定時提醒人們去完成一些事情。系統大致如下,初始的時候,人們可能會註冊很多任務,每乙個任務的註冊如下 register q num period 表示從系統啟動開始,每過 per iod 秒提醒人們完成編號為 qnum 的任務。你能計算出最先被提醒的 k 個任務嗎?第...

優先佇列(3道優先佇列問題)

優先佇列是一種十分強大的資料結構,它保持了一種動態的有序性,對於不斷改變有入隊的操作,而又需要某種最大或最小的操作的問題是再合適不過了,通常優先佇列的實現是由最小堆或者最大堆完成的,並通過堆排序保持佇列的有序性,模擬佇列的結構,在實際比賽中要寫乙個堆排序還是要一定的時間的,但是stl中queue容器...

優先佇列(看病優先問題)

看病要排隊這個是地球人都知道的常識。不過經過細心的0068的觀察,他發現了醫院裡排隊還是有講究的。0068所去的醫院有三個醫生 汗,這麼少 同時看病。而看病的人病情有輕重,所以不能根據簡單的先來先服務的原則。所以醫院對每種病情規定了10種不同的優先順序。級別為10的優先權最高,級別為1的優先權最低。...