一開始的思路是用兩個佇列,乙個優先佇列,乙個普通的佇列,普通佇列的首元素與優先佇列的首元素比較,元素不相同的話將普通佇列的首元素移至最後,時間不消耗;如果相同,列印當前內容,時間+1分鐘,同時移除首元素。結果證明不可行,因為優先佇列中,優先順序相同的情況下,不是按照輸入的先後順序排列的。下面是**
struct node
friend bool operator==(node a, node b)
friend bool operator!=(node a, node b) };
int main()
int minute = 1;
while (q.size()!=0)
cout << minute << "分鐘列印當前內容" << q.front().s << endl;
不能直接比較元素兩個佇列的元素是否相同,而是應該直接比較優先順序是否相同。稍作修改,可以將上面元素是否形同換成優先順序是否相同,我是將優先佇列換成vector
struct node
friend bool operator==(node a, node b)
friend bool operator!=(node a, node b) };
int main()
sort(vec.begin(), vec.end());
int minute = 1;
int index_sort = 0;
while (q.size()) //佇列元素清空為止
UVA12100 列印佇列
題目大意 現在有乙個列印佇列,裡面的任務是無序的,每個任務有乙個權值,印表機會從第乙個任務開始執行,如果當前任務的權值是佇列中最大的,那麼就列印,否則就將該任務放置到隊末。每次列印消耗一定的時間,求該序列中的任務分別在什麼時候被列印。這題開乙個優先佇列乙個普通佇列,佇列裡的元素出隊,如果出隊元素和優...
UVA 12100 列印佇列 STL deque
給定n個優先順序列印佇列,然後從0開始編號到n 1。出隊乙個元素,如果他是佇列中優先順序最高的,列印 耗時一分鐘 否則放到隊尾 不耗時 給定乙個m,求位置m的檔案列印的時間。用乙個priority queue去尋找優先順序最高的元素,然後用乙個deque 去模擬佇列 pair第乙個元素是優先順序,第...
UVA 11374 SPFA 路徑列印
有廉價線路和普通線路,只有一次乘坐普通線路的機會,問從s到e花費最少的線路。並輸出路徑。由於只有一次機會,因此可以直接列舉乘坐的普通線路。針對每次選擇,兩遍spfa 列舉正向和反向 至於輸出路徑,只需要記錄每個點的最短路徑上乙個點就可以了。輸出的時候遞迴輸出就可以了。include define l...