【HDU】-4006-The kth great number(优先队列,好)
2016-07-25 21:24
369 查看
The kth great number
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 9936 Accepted Submission(s): 3960
Problem Description
Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to write down a number, or ask Xiao Bao what the kth great number is. Because the number written by Xiao Ming is too much, Xiao Bao is feeling giddy. Now, try to help
Xiao Bao.
Input
There are several test cases. For each test case, the first line of input contains two positive integer n, k. Then n lines follow. If Xiao Ming choose to write down a number, there will be an " I" followed by a number that Xiao Ming will write down. If Xiao
Ming choose to ask Xiao Bao, there will be a "Q", then you need to output the kth great number.
Output
The output consists of one integer representing the largest number of islands that all lie on one line.
Sample Input
8 3
I 1
I 2
I 3
Q
I 5
Q
I 4
Q
Sample Output
1
2
3
题意:n个数分拨输入,遇Q输出里面第m大的元素。
题解:始终保持队列里有m个元素即可,如果下一个元素大于最大的,加进来,把最小的弹出。如果不大于,加进了没有意义,不要,继续。
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
struct node
{
int num;
bool friend operator < (node a,node b)
{
return a.num>b.num; //数字从小往大排序,小先进,大后进 (先进先出)
}
}a;
int main()
{
int n,m;
char c;
int ant;
while(~scanf("%d %d",&n,&m))
{
ant=0;
priority_queue<node> q;
for(int i=1;i<=n;i++)
{
getchar();
scanf("%c",&c);
if(c=='I')
{
int t;
ant++;
scanf("%d",&a.num);
if(ant<=m) //不足m个数直接进去
{
q.push(a);
}
else //大于m时,判断是否大于队列里的最大值
{
t=a.num;
a=q.top();
if(t<a.num) //小于不管,继续
continue;
else
{
q.pop(); //新的数大于顶 —最大的,新的数进去,把最小的弹出
a.num=t;
q.push(a); //始终保持队列里有m个元素,输出时输出最大的(顶元素)即可
}
}
}
else
{
a=q.top();
printf("%d\n",a.num);
}
}
}
return 0;
}
相关文章推荐
- 如何编写递归程序(分治法)
- BZOJ 4619 Swap Space 解题报告
- 敏捷开发初学体会
- Java Swing 添加按钮、菜单栏、文字域
- BZOJ 4619 Swap Space 解题报告
- 【多线程】线程中的同步锁synchronized
- editText设置背景后,被软键盘覆盖
- java图像处理-(指定区域内)灰度化、透明化(alpha通道)处理
- RunLoop详解4
- 2.使用树梅派进行视频录制
- CodeForces 289B Polo the Penguin and Matrix (数学,中位数)
- 个人主页
- CSS预处理技术总结(一)Less
- 利用XShell上传、下载文件(使用sz与rz命令),超实用!
- Rails(栈)
- python 学习(五) While 循环语句
- 我的Android进阶之旅------>解决Error:Unable to find method 'org.gradle.api.internal.project.ProjectInternal.g
- <实训|第六天>偷偷让新手的Linux无限重启附linux主机名称不是随便乱改的!
- iOS runloop 创建一个和App生命周期相同的线程
- 选择排序