HDU 4006:The kth great number

来源:互联网 发布:小学生大数据分析 编辑:程序博客网 时间:2024/06/01 09:37

问题描述

再插入删除过程中查询数组的第k大的数。

解题思路

优先队列,刚开始的时候很蠢的把所有的数都存到了优先队列了,TLE了一遍之后发现只需保持优先队列里有k个数就好了。

代码

#include <iostream>#include <queue>#include <stdio.h>using namespace std;char c;long long n,k,a;int main(){    freopen("in.txt","r",stdin);    while(cin>>n>>k)    {        priority_queue<long long,vector<long long>,greater<long long> > q;        for(int i=0;i<n;i++)        {            cin>>c;            if(c=='I')            {                cin>>a;                q.push(a);                if(q.size()>k)                    q.pop();            }            else                cout<<q.top()<<endl;        }    }    return 0;}


问题与反思

小数据优先的优先队列的写法。

原创粉丝点击