Problem Description
来源:互联网 发布:python try 重试 编辑:程序博客网 时间:2024/06/08 08:49
一批幸福的列车即将从杭州驶向幸福的终点站——温州,身为总列车长的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<cstdio>#include<cstring>#include<queue>#include<algorithm>using namespace std;struct node{ char name[25]; int rp;//三种重载都行,任选吧// bool operator<(node a)const// {// if(a.rp==rp)// {// return strcmp(a.name,name)>0;// }// return a.rp<rp;// } friend bool operator < (node a,node b) { if(a.rp==b.rp) { return strcmp(a.name,b.name)<0; } return a.rp>b.rp; }//自定义优先队列};//bool operator<(const node &a,const node &b)//{// if(a.rp==b.rp)// {// return strcmp(a.name,b.name)<0;// }// return a.rp>b.rp;//}int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { priority_queue<node> q[10005]; for(int i=1; i<=n; ++i) { int num; scanf("%d",&num); for(int j=0; j<num; ++j) { node tp; scanf("%s%d",tp.name,&tp.rp); q[i].push(tp); } } for(int i=0; i<m; ++i) { char s[25]; scanf("%s",s); if(strcmp(s,"GETOUT")==0) { int num; scanf("%d",&num); node tp=q[num].top(); q[num].pop(); printf("%s\n",tp.name); } else if(strcmp(s,"GETON")==0) { int num; node tp; scanf("%d%s%d",&num,tp.name,&tp.rp); q[num].push(tp); } else { int a,b; scanf("%d%d",&a,&b); while(!q[b].empty()) { node tp=q[b].top(); q[b].pop(); q[a].push(tp); } } } } return 0;}
- Problem Description
- Problem Description
- HDU 1005 Problem Description
- HDU 2553 Problem Description
- fuzhuo----Problem Description
- 【HDU 6038 Problem Description】+ 思维
- hdu 1016 Problem Description (广搜)
- Description
- description
- description
- description
- description
- description
- description
- Problem Description Your task is to calculate the sum of some integers. Input Input contains an
- 1-1 欢迎来的C++世界 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通
- Macro Description
- Job Description:
- 文章标题 基础练习 十六进制转八进制
- 欢迎使用CSDN-markdown编辑器
- Ceres优化
- poj2446 Chessboard【最大匹配】
- SFTP-上传下载工具类
- Problem Description
- Spring:IoC 用法(六、自动扫描Bean用法)
- Android零基础入门第8节:HelloWorld,我的第一趟旅程出发点
- 使用不同语言计算时间差
- Hadoop之网站日志分析项目案例(二)数据清洗(笔记22)
- asp中md5加密
- 离散化
- Unity RayCast容易忽视的地方
- NGUI之UIRoot屏幕分辨率自适应