我們定義優先佇列的變數為q
q.empty();可以對佇列是否為空進行判定。有兩個返回值1,0。如果是1,代表隊列為空。
q.push();可以將資訊壓入佇列中,即將資訊儲存在佇列中。
q.pop();將佇列的第乙個元素刪除。沒有返回值。
q.top();將佇列頂的元素輸出。
q.size();返回佇列的大小,即佇列中有幾個元素。
description
一批幸福的列車即將從杭州駛向幸福的終點站——溫州,身為總列車長的linle有一些奇怪的癖好。
他會記錄下全部乘客的名字(name)和他們的人品值(rp),根據這些將他們排序,並不時地從某輛列車裡踢出人品最不好(rp值最低)的乙個人,當兩個人人品一樣不好時,他就會踢出名字難聽的人(linle認為按字典順序,排在越在後面的人名字越難聽)。
當然出於列車行駛需要,他還會不時的發布一些命令,比如讓某個乘客上車,合併某兩輛列車等。
linle的上一任秘書***因為不能高效地執行他的這些命令而被炒魷魚,他現在正在尋覓新的秘書人選,你能不能勝任呢?(謝絕男士,待遇豐厚~~~)
input
本題包含多組測試,請處理到檔案結束。
對於每一組測試,第一行包含兩個整數 n ,m ,表示一共有n( n<=10000 ) 輛列車,執行m( m<=10000 )次操作。
接下來有 n (從1開始記數)輛列車的資訊,每輛列車先有乙個數字 xi(1 <= xi <= 100 ),表示該列車有xi個乘客,接下來xi行乘客資訊,每個乘客包含名字(20個字元以內,不包含空白符)和人品(0<= rp <=30000)。
再接下來有 m 行操作資訊,一共有3種操作,分別為
geton xi name rp 表示有乙個叫name的人品為rp的人登上第xi列車
join xi xj 表示有將第xj輛列車合併到xi輛列車
getout xi 表示從第xi輛列車踢出乙個人品最差的人
測試資料保證每個操作均合法,即不會將已經被合併到其他列車的列車再進行合併,也不會從一輛空列車裡踢出乘客
output
對於每個 getout 命令,輸出被踢出的那個人的名字
sample input
3 52
xhd 0
zl 1
2
8600 1
ll 2
1
ignatius 3
getout 1
join 1 2
getout 1
geton 3 hoho 2
getout 3
sample output
xhdzl
hoho
這段**就是優先佇列的核心區,檔案頭是 #include ,以下定義了結構體,在結構體內部定義了排序的乙個函式,這一段**對於向我這樣的初學者來說,背過就好,裡面很多是資料結構的知識,解釋起來比較麻煩,在這裡不進行敘述了。需要注意的是 friend bool operator<(l a,l b) 這一行中friend一詞可省略,加上是為了是程式執行速度更快,因為friend可以讓系統將排序函式與結構體視為一體。
#include #include #include #include #include #define max 10010
using namespace std;
struct l
};priority_queueq[max];
如果輸入的是geton:先將資訊存入結構體變數中,然後在壓入佇列。
如果輸入的是join:需要先進行對加入車輛的判空,因為題目中要求,你允許將空車合併。
如果輸入的是getout:首先將其輸出,之後利用**中的q.pop();將其刪除。
#include #include #include #include #include #define max 10010
using namespace std;
struct l
};priority_queueq[max];
int main()
}while(m--)
else if(od=="join")
}else}}
return 0;
}
HDU 1434 幸福列車 優先佇列
一批幸福的列車即將從杭州駛向幸福的終點站 溫州,身為總列車長的linle有一些奇怪的癖好。他會記錄下全部乘客的名字 name 和他們的人品值 rp 根據這些將他們排序,並不時地從某輛列車裡踢出人品最不好 rp值最低 的乙個人,當兩個人人品一樣不好時,他就會踢出名字難聽的人 linle認為按字典順序,...
HDU1434 幸福列車(優先佇列)
problem description 一批幸福的列車即將從杭州駛向幸福的終點站 溫州,身為總列車長的linle有一些奇怪的癖好。他會記錄下全部乘客的名字 name 和他們的人品值 rp 根據這些將他們排序,並不時地從某輛列車裡踢出人品最不好 rp值最低 的乙個人,當兩個人人品一樣不好時,他就會踢出...
A 幸福列車
一批幸福的列車即將從杭州駛向幸福的終點站 溫州,身為總列車長的linle有一些奇怪的癖好。他會記錄下全部乘客的名字 name 和他們的人品值 rp 根據這些將他們排序,並不時地從某輛列車裡踢出人品最不好 rp值最低 的乙個人,當兩個人人品一樣不好時,他就會踢出名字難聽的人 linle認為按字典順序,...