soj1022. Poor contestant Prob
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的更多相关文章
- 关于过拟合、局部最小值、以及Poor Generalization的思考
Poor Generalization 这可能是实际中遇到的最多问题. 比如FC网络为什么效果比CNN差那么多啊,是不是陷入局部最小值啊?是不是过拟合啊?是不是欠拟合啊? 在操场跑步的时候,又从SVM ...
- 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
- PSD 学位涵义 Poor, Smart and Deep desire to become rich 的缩写,不是真正的学位认证,是对一种心理状态的形容,所谓PSD学位是形容那些贫穷,但是很聪明,很深…_●.×
PSD 学位涵义 Poor, Smart and Deep desire to become rich 的缩写,不是真正的学位认证,是对一种心理状态的形容,所谓PSD学位是形容那些贫穷,但是很聪明,很 ...
- 金句: "對比MBA學位,我們更需要PSD學位的人!" Poor, Smart and Deep Desire to… | consilient_lollapalooza on Xanga
金句: "對比MBA學位,我們更需要PSD學位的人!" Poor, Smart and Deep Desire to… | consilient_lollapalooza on X ...
- 1228.Poor Pigs 可怜的猪
转自[LeetCode] Poor Pigs 可怜的猪 There are 1000 buckets, one and only one of them contains poison, the re ...
- 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 ...
- 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的 ...
- Poor Warehouse Keeper
Poor Warehouse Keeper http://acm.hdu.edu.cn/showproblem.php?pid=4803 Jenny is a warehouse keeper. He ...
- SOJ1022 Uniform Generator
Computer simulations often require random numbers. One way to generate pseudo-random numbers is via ...
随机推荐
- Hibernate(十)
1.批处理 //批处理 :批量处理 //批量插入数据 @Test public void addData(){ Random random=new Random(); for(int i=1;i< ...
- 第六周PSP&进度条
团队项目PSP 一.表格: C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论alpha完成情况并总结 9:40 11:20 17 ...
- WebDriver 工作原理
WebDriver是W3C的一个标准,由Selenium主持. 具体的协议标准可以从http://code.google.com/p/selenium/wiki/JsonWireProtocol#Co ...
- [日常工作] 应用服务器上面应该尽量少开各种应用 --Chrome 内存泄露 让应用服务器非常缓慢
1. 前段时间修改 服务器的密码 导致应用程序的web site 启动有问题 ,打开chrome 查看了错误详细信息 但是忘记关了.. 今天反馈机器非常缓慢 简单看了下内存 吐血... 所以以后不能在 ...
- Android事件分派机制
最近一直在学习Android里面的事件分派机制,感觉很奇妙,看了很多博客和分析,才在脑子里形成了一个模糊的概念,对事件分派有了一定的认识. 于是,我画了一个图来简单明了的表述Android中事件的分派 ...
- 在服务器搭建Jupyter notebook
安装 Jupyter Notebook (这里虽然是对centos和Python2的,但是在Ubuntu16.04,Python3同样可以照着弄) Jupyter Notebook 简介 Jupyte ...
- 血液检测 & 创业骗局
血液检测 & 创业骗局 硅谷血液检测公司 Theranos http://www.sohu.com/a/236659372_100053377 https://www.jianshu.com/ ...
- UVALive6442_Coins on a Ring
真正的水题,可惜无法当场机智一下. 这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少? 其实是这样来考虑的,我们可以随便设置 ...
- struts 类型转换
- 在HL引擎中制作自定义高清贴花
你是不是想过要做自定义的子弹孔.喷漆或者一些自定义的痕迹呢? 如果按照HL引擎的基本FA,首先要在decals.wad里加入我们自定义的纹理,然后利用gEngfuncs.pEfxAPI->R_D ...