HDU1434 幸福列车【模拟+优先队列】(老师程序代码注释)_幸福列车 hdu1434-程序员宅基地

技术标签: HDU  

幸福列车

Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 131070/65535 K (Java/Others)
Total Submission(s): 3050    Accepted Submission(s): 993


 

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.

 

 

Author

linle

 

 

Source

ACM暑期集训队练习赛(四)

 

 

Recommend

lcy

 

/* HDU1434 幸福列车 */
 
#include <iostream>
#include <queue>
 
using namespace std;
 
const int N = 10000;
 
struct _node {
    string name;
    int rp;
    friend bool operator < (_node a, _node b) {//运算符重载 
        if(a.rp != b.rp)
            return a.rp > b.rp;
        else
            return a.name < b.name;
    }//排序,将队列中的人按照题意进行排序,以便后续直接踢出 
};
 
int main()
{
    std::ios::sync_with_stdio(false);//加快c++的输入输出速度的代码 
 
    int n, m, xi, xj;
 
    while(cin >> n >> m) {
        priority_queue<_node> q[N+1];
        _node t;   // 临时的 
 
        for(int i=1; i<=n; i++) {
            cin >> xi;
            while(xi--) {
                cin >> t.name >> t.rp;//读入人名和人品 
 
                q[i].push(t);//push到第i个队列 
            }//31__38都是初始化代码 
        }
 
        while(m--) {//模拟m个指令,做m个循环 
            string op;
 
            cin >> op;//读入命令 
            if(op == "GETON") {//根据不同的命令做判断,做不同的处理,geton是上车 
                cin >> xi >> t.name >> t.rp;
 
                q[xi].push(t);
            } else if(op == "JOIN") {//把一个车厢里面的人导入另一个车厢 
                cin >> xi >> xj;
                while(!q[xj].empty()) {
                    t = q[xj].top();//先暂存在t中,在导入xi中,也可以直接导,不用存在t中了,比较繁琐 
                    q[xi].push(t);
                    q[xj].pop();//xj中的释放 
                }
            } else if(op == "GETOUT") {
                cin >> xi;
                t = q[xi].top();//找在前面的人,踢出 
                cout << t.name << endl;
                q[xi].pop();
            }
        }
    }
 
    return 0;
}


/*
输入:
 
3 5         三辆列车,执行5次操作 
2           有两个人在一车厢 
xhd 0       名字xhd 人品0 
zl 1        名字zl人品1
2           有两个人在二车厢 
8600 1      名字8600 人品1
ll 2        名字ll 人品2 
1           有一个人在三车厢  
Ignatius 3  名字 Ignatius,人品2  
GETOUT 1    一车厢踢出一个人 
JOIN 1 2    合并一、二车厢 
GETOUT 1    一车厢踢出一个人 
GETON 3 hoho 2  三车厢上了一个名字hoho,人品为2的人 
GETOUT 3    三车厢踢出一个人 

输出:
xhd
zl
hoho

 
分析:
有几个车厢,就得有几个队列,而且得是优先队列。 
合理的数据结构表示是关键 
*/

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiaorui98/article/details/81168913

智能推荐

Building Performance Metrics into ASP.NET MVC Applications-程序员宅基地

文章浏览阅读1.2k次。https://www.simple-talk.com/dotnet/performance/building-performance-metrics-into-asp.net-mvc-applications/https://technet.microsoft.com/en-us/library/ee176961.aspxWhen you're ins_performance metrics into asp.net mvc applications

【PythonDjango后台实例 第一章】Python3.6.1+Pyserial 实现读取STM32蓝牙串口_python3.6不支持pyserial吗-程序员宅基地

文章浏览阅读4.2k次,点赞3次,收藏49次。在Baidu,Google寻找了一大堆帖子,最后索性自己看文档自己研究。最后发现实现非常容易,得益于Python强大的串口库Pyserial可以直接调用串口第一步:下载pyserial本人是windows环境,所以其他环境请自行切换1,windows按 + R 打开搜索2,输入CMD进入终端3. 输入pip install pyserial 下载最新版第_python3.6不支持pyserial吗

rust 使用 ffi 调用 C 静态链接库_rustc-link-lib-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏4次。创建build.rs //build.rsexterncratedunce;usestd::{env,path::PathBuf};fnmain(){letlibrary_name="r2c";letroot=PathBuf::from(env::var_os("CARGO_MANIFEST_DIR").unwrap());..._rustc-link-lib

R语言 双坐标轴组合图形可视化实现_r语言如何置组合图的横坐标标题和纵坐标标题-程序员宅基地

文章浏览阅读3.1k次,点赞4次,收藏34次。“数据可视化过程中,经常遇到两种不同类型图表组合的情况,就是所谓的双坐标轴组合图。最近学习中遇到了此问题,特学习和大家分享,部分内容有个人改进哟”01—​效果图02—twoord.plot用法和参数解释---plotrix包# 1、用法/Usage:twoord.plot(lx,ly,rx,ry,data=NULL,main="",xlim=NULL..._r语言如何置组合图的横坐标标题和纵坐标标题

grpc 入门问题_proto: file does not reside within any path specif-程序员宅基地

文章浏览阅读1.7k次。一. 将.proto 文件编译出java文件1.下载对应系统的protoc;【自用链接:https://pan.baidu.com/s/1yTwRi8CzvnjX9ICRExQpqQ 密码:mrow】2.在proto.exe所在文件目录下打开命令行(shift+右键),执行: protoc -I=E:\tmp --java_out=./ E:\tmp\send_mail...._proto: file does not reside within any path specified using

大数据基础学习-7.Hive-1.1.0_hive-jdbc:pom:1.1.0-cdh5.13.0 mvn-程序员宅基地

文章浏览阅读1.5k次。一、引入Hive原因– 对存在HDFS上的文件或HBase中的表进行查询时,要手工写一堆MapReduce代码– 对于统计任务,只能由懂MapReduce的程序员才能搞定,耗时耗力FaceBook实现并开源Hive,解决海量结构化日志查询– Hive是一个SQL解析引擎,将SQL语句转译成MR Job,然后在Hadoop平台上运行,达到快速开发的目的。Hive一般不会直接接入到业务中使用,从某种意..._hive-jdbc:pom:1.1.0-cdh5.13.0 mvn

随便推点

shiro550反序列化-程序员宅基地

文章浏览阅读547次。java反序列化_shiro550反序列化

hive中多行合并一行concat_ws(去重及不去重)_concat_ws 去重-程序员宅基地

文章浏览阅读1.7w次,点赞6次,收藏13次。原始数据:id scoreaaa 1aaa 2aaa 3预期结果:id scoreaaa 1,2,3可使用select id,concat_ws(',',collect_set(cast(colname as string))) from table;使用concat_ws函数,需将字段转成string格式,collect_set会对该..._concat_ws 去重

vue项目中树形结构下拉框(vue-treeselect)_vue-treeselect 属性-程序员宅基地

文章浏览阅读8.6k次。1.npm 安装依赖npm install --save @riophae/vue-treeselect2. 在需要使用的组件中引入import Treeselect from '@riophae/vue-treeselect'import '@riophae/vue-treeselect/dist/vue-treeselect.css' components: { Tre..._vue-treeselect 属性

计算机毕业设计Java高校后勤保修系统(源码+系统+mysql数据库+lw文档)_保修系统系统包图-程序员宅基地

文章浏览阅读224次。计算机毕业设计Java高校后勤保修系统(源码+系统+mysql数据库+lw文档)ssm基于uniapp+Vue框架的《露营》App开发与实现。springboot基于springboot的社会公益平台。ssm基于HTML的“牧经校园疫情防控网站”的设计与实现。springboot基于Java的高校教室申请管理系统。JSP客户关系管理系统的设计与实现sqlserver。JSP教学视频点播系统的设计与实现SQLServer。ssm基于HTML的“守护萌宠”网站的设计与实现。_保修系统系统包图

Git常规使用笔记及注意事项了解一下_使用 git的注意事项-程序员宅基地

文章浏览阅读2.5k次。1.先在Git中仓库建立可在github中或码云中搭建 或自己搭建服务器注意设置忽略上传的文件 过滤掉一些文件或文件夹,那么被过滤的内容就不会被git管理,比如: build/: 过滤整个build文件夹; *.class: 过滤所有.class后缀的文件; path/to/local.properties: 过滤具体文件 .gi..._使用 git的注意事项

Spring学习之旅(十一) Spring Web Flow的配置及简单使用_spring flow-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏15次。学习Spring Web Flow的简单使用_spring flow

推荐文章

热门文章

相关标签