hdu 4006 The kth great number
2016-07-02 08:44
281 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006
题目大意:n次操作,每次操作可以插入一个数,或者询问第k大的数。回答每个询问。 (1=<k<=n<=1000000)
思路:因为要求第k大的数,所以小于第k个数不插入。由于k和n的数据量挺大的,所以用优先队列来存储前k个数,维护小根堆顶为第k大的数。每次插入需要O(logk)的复杂度,查询只需要O(1)的复杂度。
题目大意:n次操作,每次操作可以插入一个数,或者询问第k大的数。回答每个询问。 (1=<k<=n<=1000000)
思路:因为要求第k大的数,所以小于第k个数不插入。由于k和n的数据量挺大的,所以用优先队列来存储前k个数,维护小根堆顶为第k大的数。每次插入需要O(logk)的复杂度,查询只需要O(1)的复杂度。
#include <iostream> #include<bits/stdc++.h> using namespace std; int main() { int n,k; while(~scanf("%d%d",&n,&k)) { priority_queue<int,vector<int>,greater<int> > q; int nk=0,num=0; for(int i=0;i<n;i++) { char s[2]; scanf("%s",s); if(s[0]=='I') { int t; scanf("%d",&t); if(t>nk) { q.push(t); if(++num>k) { q.pop(); nk=q.top(); num=k; } } } else cout<<q.top()<<endl; } } }
相关文章推荐
- 接口回调思路
- mac下mysql5.6字符集设置
- 解决tkinter在windows上没有正确安装的问题
- 转:反向代理服务器的工作原理
- mong 按 geometry 搜索 地理位置信息
- UIControl——event-target-action
- C语言32个关键字
- redis持久化和常见故障
- 两种方法实现在HTML页面加载完毕后运行某个js
- Swift 语法
- Linux折腾记
- MFC创建自己的工具栏(SDI)
- There is no Action mapped for namespace [/] and action name [user] associated with context path
- JS 页面加载触发事件 document.ready和onload的区别
- 【总结】嵌入式上层和底层
- 几种部署工具比较foreman, ansible, fuel
- C#创建xml文件并写入内容
- 通过strace 监控 fdatasync
- ATOM基础教程一初识ATOM(1)
- core的三种生成方法 和 使用core进行gdb调试的方法