1022. Poor contestant Prob

Constraints

Time Limit: 1 secs, Memory Limit: 32 MB

Description

As everybody known, “BG meeting” is very very popular in the ACM training team of ZSU. 
After each online contest, they will go out for “smoking”. Who will be the poor ones that have to BG the others? Of course, the half who solve less problems. 
The rule runs well when the number of the contestants is even. But if the number is odd, it is impossible to divide them into two equal parts. It gives a dilemma to the BG meeting committee. After a careful discussion with Mr. Guo, a new rule emerged: if the number of the contestant is odd, the committee will first sort the contestants according to the number of problems they solved, and then they will pick out the middle one. This poor boy or girl will have no chance to attend the BG meeting. 
Strange rule, isn`t it?
As the number of the contestants is becoming more and more large, the committee need to write a program which will pick out the poor one efficiently.
Note that: Every contestant solves different number of problems. The total number of the contestants will not exceed 10^5.

Input

There are several cases in the input. The first line of the input will be an integer M, the number of the cases.
Each case is consisted of a list of commands. There are 3 types of commands.
1. Add xxx n : add a record to the data base, where xxx is the name of the contestant, which is only consisted of at most 10 letters or digits, n is the number of problems he/she solved. (Each name will appear in Add commands only once).
2.Query :
3.End :End of the case.

Output

1.For the Query command: If the current number of contestants is odd, the program should output the poor contestant’s name currently even if there is only one contestants, otherwise, just out put “No one!” (without quotes).
2.For the End command: 
   If the total number of contestants in the data base is even, you should out put “Happy BG meeting!!”(without quotes),otherwise, you should out put the “xxx is so poor. ”(without quotes) where xxx is the name of the poor one.
3.Each case should be separated by a blank line.

Sample Input

2
Add Magicpig 100
Add Radium 600
Add Kingfkong 300
Add Dynamic 700
Query
Add Axing 400
Query
Add Inkfish 1000
Add Carp 800
End Add Radium 100
Add Magicpig 200
End

Sample Output

No one!
Axing
Radium is so poor. Happy BG meeting!!

Problem Source

ZSUACM Team Member

这个题目思路并不复杂,就是建两个优先队列,一个最大堆,一个最小堆,在插入过程不断维护,使得两个堆size尽可能相同。

问题就是,做完之后会超时,百度了一下,发现是那个scanf和printf能更省时(蛋疼,我真不爱用这个)。然后还得把所有的string都变成char[]

终于给过了。。。。。。

#include <iostream>
#include <queue>
#include <cstring>
#include <vector>
#include <cstdio>
#include <string>
using namespace std; struct contestant
{
string name;
int num;
};
//建立一个最大堆和最小堆(优先队列实现)
struct Greater
{
bool operator()(const contestant &a,const contestant &b)
{
return a.num < b.num;
}
}; struct Less
{
bool operator()(const contestant &a,const contestant &b)
{
return a.num > b.num;
}
}; int main()
{
int M;
scanf("%d",&M);
while(M--)
{
priority_queue<contestant,vector<contestant>,Less> MIN;
priority_queue<contestant,vector<contestant>,Greater> MAX;
//string command;
char command[20];
while(scanf("%s",command))
{
if(strcmp(command,"Add")==0)
{
char name1[20];
scanf("%s",name1);
string name(name1);
int number;
scanf("%d",&number);
const contestant tmp={name,number};
if(MAX.size()==MIN.size())
{
if(MAX.empty() || tmp.num < MIN.top().num)
MAX.push(tmp);
else if(tmp.num > MIN.top().num)
{
MAX.push(MIN.top());
MIN.pop();
MIN.push(tmp);
}
}
else if(MAX.size() > MIN.size())
{
if(tmp.num > MAX.top().num)
MIN.push(tmp);
else if(tmp.num < MAX.top().num)
{
MIN.push(MAX.top());
MAX.pop();
MAX.push(tmp);
}
}
}
else if(strcmp(command,"Query")==0)
{
if(MAX.size() == MIN.size())
printf("No one!\n");
else
{
printf("%s\n",MAX.top().name.c_str());
}
}
else if(strcmp(command,"End")==0)
{
if(MAX.size() == MIN.size())
printf("Happy BG meeting!!\n");
else printf("%s is so poor.\n",MAX.top().name.c_str());
break;
}
}
if(M != 0)
printf("\n");
}
return 0;
}

soj1022. Poor contestant Prob的更多相关文章

  1. 关于过拟合、局部最小值、以及Poor Generalization的思考

    Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...

  2. vmware mysql报kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor

    kernel: EXT4-fs (dm-0): Unaligned AIO/DIO on inode 1055943 by mysqld; performance will be poor

  3. PSD 学位涵义   Poor, Smart and Deep desire to become rich 的缩写,不是真正的学位认证,是对一种心理状态的形容,所谓PSD学位是形容那些贫穷,但是很聪明,很深…_●.×

    PSD 学位涵义 Poor, Smart and Deep desire to become rich 的缩写,不是真正的学位认证,是对一种心理状态的形容,所谓PSD学位是形容那些贫穷,但是很聪明,很 ...

  4. 金句: "對比MBA學位,我們更需要PSD學位的人!" Poor, Smart and Deep Desire to… | consilient_lollapalooza on Xanga

    金句: "對比MBA學位,我們更需要PSD學位的人!" Poor, Smart and Deep Desire to… | consilient_lollapalooza on X ...

  5. 1228.Poor Pigs 可怜的猪

    转自[LeetCode] Poor Pigs 可怜的猪 There are 1000 buckets, one and only one of them contains poison, the re ...

  6. Could not autowire. No beans of 'TbItemMapper' type found. less... (Ctrl+F1) Checks autowiring prob

    Intellij Idea开发工具在@Autowired或者@Resource注入XxxMapper接口时报如下错误: Could not autowire. No beans of 'TbItemM ...

  7. PL/SQL Developer登录出现——Using a filter for all users can lead to poor performance!

    用PL/SQL  Developer登录Oracle时提示:Using a filter for all users can lead to poor performance! 分析:与Oracle的 ...

  8. Poor Warehouse Keeper

    Poor Warehouse Keeper http://acm.hdu.edu.cn/showproblem.php?pid=4803 Jenny is a warehouse keeper. He ...

  9. SOJ1022 Uniform Generator

    Computer simulations often require random numbers. One way to generate pseudo-random numbers is via ...

随机推荐

  1. ztree 使用心得

    最近项目需要用ztree ,初步研究感觉这个插件写的实在是太好了.现总结遇到的问题 封装一颗树 /** * 按类型分组树 * Id 按类型分组ID * treeId 树ID * treeDivId d ...

  2. cxGrid 单元格回车移到下一行,当移到最后一个单元格时回车新增一行【转】

    1 在TcxGridDBTableView中,设定属性 NewItemRow.Visible = True 2 在cxgrid中输入数据怎样回车换行  在TcxGridDBTableView中  将属 ...

  3. 反爬虫之JS反编译:PyExecJS

    PyExecJS是python运行JavaScript代码的包 安装: pip install  PyExecJS (或者easy_install PyExecJS) 依赖:  需要有执行JS的程序, ...

  4. ng-include 上ng-controller 无法获取控件

    A.Html内容如下 <div> <div kendo-grid="testGrid" k-options="testOptions"> ...

  5. java static{}块

    java中static{}块只有在类加载是才会被调用. 这说明:static只有可能被调用一次. 原因:首先理解什么是类加载,区分类加载和申明对象的区别. public class StaticTes ...

  6. Java 软引用和弱引用

    软引用(SoftReference) 软引用是用来描述一些有用但并不是必需的对象,在Java中用java.lang.ref.SoftReference类来表示.对于软引用关联着的对象,只有在内存不足的 ...

  7. 在Asp.Net Core中使用Session

    1.在Stratup.cs中配置Session public void ConfigureServices(IServiceCollection services) { services.AddSes ...

  8. Mxnet Windows配置

    MXNET Windows 编译安装(Python) 本文只记录Mxnet在windows下的编译安装,更多环境配置请移步官方文档:http://mxnet.readthedocs.io/en/lat ...

  9. spring注解方式注入

    1.通过Resource注入 1.在属性上注入 1.默认注入 即不指定spring容器里面的名字 匹配规则:先通过属性的名字查找 再通过属性类型与实现类类型匹配查找 当有两个实现类会报错 2.通过指定 ...

  10. 子类的实例给父类的引用 在编译器时候 jvm认为他是父类的实例 只会去寻找父类里面的方法 如果调用子类里面的属性或者方法时候 jvm会认为该引用并没有 所以会报错