题目

询问第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(或者)优先队列)的更多相关文章

  1. 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 ...

  2. hdu 4006 The kth great number (优先队列)

    /********************************************************** 题目: The kth great number(HDU 4006) 链接: h ...

  3. 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 ...

  4. HDU 4006 The kth great number (优先队列)

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

  5. hdu 4006 The kth great number(优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006 题目大意: 第一行 输入 n k,后有 n 行,对于每一行有两种状态 ,①“I x” : 插入 ...

  6. hdu 4006 The kth great number

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006 思路:利用优先队列的性质,将数据存入后会自动对数据进行排序 #include<stdlib ...

  7. HDU 4006 The kth great number【优先队列】

    题意:输入n行,k,如果一行以I开头,那么插入x,如果以Q开头,则输出第k大的数 用优先队列来做,将队列的大小维护在k这么大,然后每次取队首元素就可以了 另外这个维护队列只有k个元素的时候需要注意一下 ...

  8. HDU 4006 The kth great number AVL解

    提供动态更新数据.第实时QK大量的值什么? 使用AVL统计数据结构做,比较先进的数据结构的内容. 不知道给出的数据为准值是否有反复.下面的程序是因为我能够处理重复数据出现的情况下,. 了repeat的 ...

  9. hdoj 4006 The kth great number【优先队列】

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

随机推荐

  1. hdu 4613 Points<计算几何>

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4613 题意: 判断一个集合中的点能不能由另一个集合中的点,通过平移,旋转,放缩得到~ 思路:先求出集合中的 ...

  2. DB2中的转义字符

    1.数据库脚本 )); ,'20%'); ,'OLIVER_QIN'); ,'AA''') 2.以下是DB2的转义字符 2.1 对“%”的转义 SELECT * FROM OLIVER_11 WHER ...

  3. [原创]pg_shard使用场景及功能测试

    pg_shard是一个PostgreSQL的sharding extension.可以用于Shards.Replicates tables和高可用.它可以在不修改Applications的情况下无缝分 ...

  4. How to create QTP Shared Object Repository

    How to create QTP Shared Object Repository To create a shared object repository by performing follow ...

  5. 在 Ubuntu 13.10 中搭建Java开发环境 - 懒人版

    本文记录我在Ubuntu 13.10中搭建Java开发环境. 本文环境: Ubuntu 13.10 x64运行在Win7下的VMware Workstation 10中. 1. 安装JDK与JRE s ...

  6. having count group by

    select count(*) from (select field2,count(field2) from bsgj.table1  group by field,items_id having(c ...

  7. [转]HTTPS那些事(一)HTTPS原理

    [转]HTTPS那些事(一)HTTPS原理 http://www.guokr.com/post/114121/ 楔子谣言粉碎机前些日子发布的<用公共WiFi上网会危害银行账户安全吗?>, ...

  8. 内核中的 likely() 与 unlikely()

    内核中的 likely() 与 unlikely() 在 2.6 内核中,随处可以见到 likely() 和 unlikely() 的身影,那么为什么要用它们?它们之间有什么区别? 首先要明确: if ...

  9. SQLite函数详解之二

    sqlite3支持的数据类型: NULL.INTEGER.REAL.TEXT.BLOB 但是,sqlite3也支持如下的数据类型 smallint           16位整数 integer    ...

  10. Linux C 文件与目录4 将缓冲区数据写入磁盘

    将缓冲区数据写入磁盘 所谓缓冲区,是Linux系统对文件的一种处理方式.在对文件进行写操作时,并没有立即把数据写入到磁盘,而是把数据写入到缓冲区.如果需要把数据立即写入到磁盘,可以使用sync函数.用 ...