HDU1434 幸福列車(優先佇列)

2021-08-04 02:47:43 字數 1612 閱讀 6052

problem 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

hint

huge input, scanf is recommended.

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

struct person

};

int main()

}int id1, id2, id;

for(int i = 0; i < m; i++)else

if(strcmp(op, "join") == 0)

}else

if(strcmp(op, "getout") == 0)}}

return

0;}

HDU 1434 幸福列車 優先佇列

一批幸福的列車即將從杭州駛向幸福的終點站 溫州,身為總列車長的linle有一些奇怪的癖好。他會記錄下全部乘客的名字 name 和他們的人品值 rp 根據這些將他們排序,並不時地從某輛列車裡踢出人品最不好 rp值最低 的乙個人,當兩個人人品一樣不好時,他就會踢出名字難聽的人 linle認為按字典順序,...

hdu 1434 幸福列車

一批幸福的列車即將從杭州駛向幸福的終點站 溫州,身為總列車長的linle有一些奇怪的癖好。他會記錄下全部乘客的名字 name 和他們的人品值 rp 根據這些將他們排序,並不時地從某輛列車裡踢出人品最不好 rp值最低 的乙個人,當兩個人人品一樣不好時,他就會踢出名字難聽的人 linle認為按字典順序,...

12 幸福列車 優先佇列

我們定義優先佇列的變數為q q.empty 可以對佇列是否為空進行判定。有兩個返回值1,0。如果是1,代表隊列為空。q.push 可以將資訊壓入佇列中,即將資訊儲存在佇列中。q.pop 將佇列的第乙個元素刪除。沒有返回值。q.top 將佇列頂的元素輸出。q.size 返回佇列的大小,即佇列中有幾個元...