hdu杭電1434 幸福列車【優先隊列】

來源:互聯網
上載者:User

標籤:

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 52xhd 0zl 128600 1ll 21Ignatius 3GETOUT 1JOIN 1 2GETOUT 1GETON 3 hoho 2GETOUT 3
 
Sample Output
xhdzlhohoHintHuge input, scanf is recommended.  
 



#include<cstdio>#include<cstring>#include<queue>#define max 10000+100using namespace std;struct train{char name[22];int rp;friend bool operator < (train a,train b){if(a.rp==b.rp){return strcmp(a.name,b.name)<0;}return a.rp>b.rp;//從小到大排列 隊伍 }};train temp;int main(){int n,m,p;//n輛車,m條命令int i,j;int num,num1,num2;char str[10];while(~scanf("%d%d",&n,&m)){priority_queue<train>q[max];for(i=1;i<=n;++i){scanf("%d",&p);while(p--){scanf("%s %d",temp.name,&temp.rp);q[i].push(temp);}}while(m--){scanf("%s",str);if(strcmp(str,"GETOUT")==0){scanf("%d",&num);temp=q[num].top();if(!q[num].empty())//出隊列之前一定要判斷非空 {printf("%s\n",temp.name);q[num].pop();}}else if(strcmp(str,"GETON")==0){scanf("%d",&num);scanf("%s %d",temp.name,&temp.rp);q[num].push(temp);}else if(strcmp(str,"JOIN")==0){scanf("%d%d",&num1,&num2);while(!q[num2].empty()){temp=q[num2].top();q[num2].pop();q[num1].push(temp);}}}}return 0;}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

hdu杭電1434 幸福列車【優先隊列】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.