zoukankan      html  css  js  c++  java
  • HDU

    题目:

    幸福列车

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


    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.
     
      根据题意,只需要开一个优先队列的数组,根据题意写好算子就可以了,然后对于每一种操作都进行相应的模拟即可。
     
    代码:
     
     1 #include <iostream>
     2 #include <string>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <queue>
     6 #define MAX 10010
     7 using namespace std;
     8 
     9 typedef struct
    10 {
    11     string name;
    12     int rp;
    13 }data;
    14 
    15 struct cmp
    16 {
    17     bool operator() (data x,data y)
    18     {
    19         if(x.rp>y.rp) return 1;
    20         else if(x.rp==y.rp && x.name<y.name) return 1;
    21         return 0;
    22     }
    23 };
    24 
    25 priority_queue<data,vector<data>,cmp> q[MAX];
    26 
    27 
    28 
    29 int main()
    30 {
    31     int i,u,v,t,n,m;
    32     data d;
    33     string od;
    34     //freopen("data.txt","r",stdin);
    35     while(scanf("%d %d",&n,&m)!=EOF)
    36     {
    37         for(i=1;i<=n;i++)
    38         {
    39             while(!q[i].empty()) q[i].pop();
    40             scanf("%d",&t);
    41             while(t--)
    42             {
    43                 cin>>d.name>>d.rp;
    44                 q[i].push(d);
    45             }
    46         }
    47         while(m--)
    48         {
    49             cin>>od;
    50             if(od=="GETON")
    51             {
    52                 cin>>u>>d.name>>d.rp;
    53                 q[u].push(d);
    54             }
    55             else if(od=="JOIN")
    56             {
    57                 scanf("%d %d",&u,&v);
    58                 while(!q[v].empty())
    59                 {
    60                     q[u].push(q[v].top());
    61                     q[v].pop();
    62                 }
    63             }
    64             else
    65             {
    66                 scanf("%d",&u);
    67                 cout<<q[u].top().name<<endl;
    68                 q[u].pop();
    69             }
    70         }
    71     }
    72     return 0;
    73 }
    1434
     
     
  • 相关阅读:
    No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
    deep-in-es6(二)
    jQuery插件--根据数据加载的进度动画案例
    shop--14.升级--本地账号注册,登录,修改密码
    shop--13.升级--Redis缓存技术
    JedisUtil工具类
    shop--12.升级--加密数据库明文密码
    shop--11.阿里云部署java网站与微信开发调试
    shop--10.店铺详情(后台+前端类似于shoplist)
    shop--10.店铺列表(前端)
  • 原文地址:https://www.cnblogs.com/sineatos/p/3302134.html
Copyright © 2011-2022 走看看