HDU 4006 The kth great number(multiset(或者)优先队列)
询问第K大的数
//这是我最初的想法,用multiset,AC了——好吧,也许是数据弱也有可能
//multiset运用——不去重,边插入边排序
//iterator的运用,插入的时候,如果是相同的数没直接放在相同的现有的数据后面的 #include<cstdio>
#include<cstring>
#include<algorithm>
#include<set>
using namespace std; //#define IN freopen("c:\\Users\\nit\\desktop\\input.txt", "r", stdin)
//#define OUT freopen("/home/nit/output.txt", "w", stdout)
//int gcd(int a,int b){return b==0?a:gcd(b,a%b);} int main()
{
multiset<int>ms;
multiset<int>::iterator it;
int n,k,a;
char q[];
while(~scanf("%d%d",&n,&k))
{
ms.clear();
int yi=;
for(int i=;i<n;i++)
{
scanf("%s",q);
if(q[]=='I')
{
scanf("%d",&a);
ms.insert(a);
if(yi==)
{
if(a>=*it)//如果比现有的第k大的数大,就更新
it++;
}
}
else
{
if(yi){
yi=;
a=k;
for(it=ms.end();a!=;it--,a--);
printf("%d\n",*it);
}
else
{
printf("%d\n",*it);
}
}
}
}
return ;
}
/*
后来百度上别人的思路,用优先队列:
struct Node
{
int x;
friend bool operator < (Node a,Node b)
{
return a.x > b.x;
}
};
priority_queue <Node> q;
主要用于重载小于号,让小的优先.
输入时先输入k个数,输入k个数后再输入时需要判断输入的数与队头的大小关系.
输入数小于队头则不进队.
输入数大于队头则进队,弹出队头.
保证优先队列中只有k的元素.
而队头是k个元素中最小的元素.
即第k大元素
好吧,我觉得也蛮好的
这是网址:http://www.cnblogs.com/zxotl/archive/2012/09/02/2667820.html
*/
HDU 4006 The kth great number(multiset(或者)优先队列)的更多相关文章
- HDU - 4006 The kth great number multiset应用(找第k大值)
The kth great number Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming ...
- hdu 4006 The kth great number (优先队列)
/********************************************************** 题目: The kth great number(HDU 4006) 链接: h ...
- HDU 4006 The kth great number 优先队列、平衡树模板题(SBT)
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- HDU 4006 The kth great number (优先队列)
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- hdu 4006 The kth great number(优先队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006 题目大意: 第一行 输入 n k,后有 n 行,对于每一行有两种状态 ,①“I x” : 插入 ...
- hdu 4006 The kth great number
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006 思路:利用优先队列的性质,将数据存入后会自动对数据进行排序 #include<stdlib ...
- HDU 4006 The kth great number【优先队列】
题意:输入n行,k,如果一行以I开头,那么插入x,如果以Q开头,则输出第k大的数 用优先队列来做,将队列的大小维护在k这么大,然后每次取队首元素就可以了 另外这个维护队列只有k个元素的时候需要注意一下 ...
- HDU 4006 The kth great number AVL解
提供动态更新数据.第实时QK大量的值什么? 使用AVL统计数据结构做,比较先进的数据结构的内容. 不知道给出的数据为准值是否有反复.下面的程序是因为我能够处理重复数据出现的情况下,. 了repeat的 ...
- hdoj 4006 The kth great number【优先队列】
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
随机推荐
- DOS通讯录
#include"stdio.h" #include"string.h" #include"stdlib.h" FILE *fp; #def ...
- 九度oj 1521 二叉树的镜像
原题链接:http://ac.jobdu.com/problem.php?pid=1521 水题,如下.. #include<algorithm> #include<iostream ...
- microsoft azure 速度测试网址
http://www.azurespeed.com/ 选择你附近的区域.可以使用 azurespeed.com 查找延迟最低的数据中心.
- iOS学习之C语言分支结构
一.BOOL类型 返回值:真:YES 假:NO 定义一个布尔类型的变量 YES == 1, NO == 0 计算机在识别时,YES就替换成1,NO就替换成0 BOOL isGirl = YES; ...
- php正则表达式获取表格内容
<?php $contents = '<tr class=""> <td>508982</td> <td>08,07,01,0 ...
- sharepoint 2010 误删除AD组用户不能访问
不小心误操作把ad中的组删除了,在sharepoint中是通过组给的权限,在ad中新建了一个同样名的组给了权限组下面的用户还是不能访问. 解决方法: 在sharepoint中把这组从网站集中删除,重新 ...
- 21.altera fpga 芯片中 pin 和 pad 区别
在chip planner 中 ,看管脚时,会看到 pin 和pad 同时出现, 如 pin120/pad174 Bank 4 那么有什么区别? PIN指芯片封装好后的管脚,即用户看到的管脚: PAD ...
- document.addEventListener理解
document.addEventListener("事件名称", 函数, false); function 某函数(event){ // 方法执行 } addEventListe ...
- VC++ MFC 如何实现在编辑框中输出具有换行功能的文段 01
很久不来写东西了,昨天睡觉前写个小工具,突然,这玩意不会换行怎么整... 首先是第一步,获取字符串的长度,转载自白乔的文章. ------------------------------------- ...
- 【Reorder List】cpp
题目: Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You must do ...