12 幸福列車 優先佇列

2021-08-21 19:14:50 字數 2776 閱讀 9217

我們定義優先佇列的變數為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 5

2

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

xhd

zl

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認為按字典順序,...