The kth great number
The kth great number
Problem Description
Input
Output
Sample Input
8 3
I 1
I 2
I 3
Q
I 5
Q
I 4
Q
Sample Output
1
2
3
Hint
分析:
就是说,给你一些数字,然后问题第k大的数字是谁中间呢会有一些新的数字加进来。我最初的想法,你加任你加,sort天下第一。然后就有了,加的时候,我不管,问的时候,我就排序一下,然后输出。超时,好吧,问题也不是很大,可能是我保存的数字太多了,于是这次就只保存k个,如果需要更新前面的k个数,我就sort 一下,不然我就不更新,然后超时。我就想,我可以考虑用插入排序去节省时间,那么我只要sort一次,应该不会有问题,可以我一想,插入排序后面移动时间比sort还要慢一些。感觉又不行。并且有一个很大的问题就在于,当sort排一个几乎是有序的序列的时候,时间会退化的很严重,时间复杂度会上升。所以,尝试了多次之后,选择放弃使用sort,于是用了优先队列。有小根堆去保存前k个,这样的话,取数方便的一下,时间复杂度也减下来了。
 #include<bits/stdc++.h>
 using namespace std;
 priority_queue<int, vector<int>, greater<int> >a;
 int main () {
   char ch;
   int n,k;
   while (~scanf("%d%d",&n,&k)) {
     while (!a.empty())
         a.pop();
     while (n--) {
       int num;
       getchar();
       scanf("%c", &ch);
       if (ch == 'I') {
         scanf("%d",&num);
         if (a.size() < k)
           a.push(num);
         else{
           int  mid = a.top();
           if (num > mid) {
             a.pop(); //队列头部数据出队
             a.push(num);//在队列尾部增加num数据
           }
         }
       }else {
         num = a.top();
         printf("%d\n",num);
       }
     }
   }
   return ;
 }
The kth great number的更多相关文章
- HDU 4006The kth great number(K大数 +小顶堆)
		The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ... 
- [LintCode] Kth Smallest Number in Sorted Matrix 有序矩阵中第K小的数字
		Find the kth smallest number in at row and column sorted matrix. Have you met this question in a rea ... 
- hdu 4006 The kth great number (优先队列)
		/********************************************************** 题目: The kth great number(HDU 4006) 链接: h ... 
- Lintcode: Kth Smallest Number in Sorted Matrix
		Find the kth smallest number in at row and column sorted matrix. Example Given k = 4 and a matrix: [ ... 
- hdoj 4006 The kth great number【优先队列】
		The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ... 
- The kth great number(set)
		The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ... 
- The kth great number(优先队列)
		The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ... 
- HDOJ4006 	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 优先队列、平衡树模板题(SBT)
		The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ... 
- [LeetCode] Kth Smallest Number in Multiplication Table 乘法表中的第K小的数字
		Nearly every one have used the Multiplication Table. But could you find out the k-th smallest number ... 
随机推荐
- JAVA笔记14-线程
			一.概念 线程:是一个程序里面不同的执行路径,每一个分支都叫线程.到现在为止我们所讲的程序分支只有一个,即main方法,称作主线程. 进程:class文件,exe文件.程序的执行过程:程序放入代码区( ... 
- [转]CSS自动换行后缩进
			原文 https://blog.csdn.net/u011974797/article/details/71439794 例如: ●这是第一行太长了超出 显示到第二行 想实现的效果: ●这是第一行太长 ... 
- vue 设置 input 为不可以编辑
			我用最笨的方法,先实现功能先,用两个input,一个可以编辑,一个不可以编辑,失去焦点后隐藏可以点击的那个,点"编辑"时,显示可以编辑的那个input <div class= ... 
- C# WPF开机自启动和只允许一个程序运行
			本文出自:https://www.cnblogs.com/2186009311CFF/p/10024949.html 在App.xaml.cs填充一下内容,即可实现只允许一个运行,且不解锁屏幕的情况下 ... 
- 新建的COM组件中没有 MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
			创建ATL组件之后,添加简单ATL对象,添加对话框资源,随后发现没有m_hWnd句柄,不响应初始化函数. 于是重新创建ATL组件,之后添加ATL控件,添加对话框资源,有m_hWnd句柄,但仍然不响应初 ... 
- LeetCode - LRU怎么将书架上的旧书完美淘汰呢
			你有一排书架,有空时会拿些书来看,经常性会买些新书.无奈书架容量有限,当新买的书放不下时,需要一个策略将旧书淘汰. LRU(最近最少使用)缓存淘汰机制正合适. 1)新买的书放在最左侧. 2)最近常看的 ... 
- antd表格分页
			<Table bordered loading={loading} dataSource={list} pagination={{ showSizeChanger: true, total: d ... 
- BZOJ 4517: [Sdoi2016]排列计数 错排 + 组合
			从 $n$ 个数中选 $m$ 个不错排,那就是说 $n-m$ 个数是错排的. 用组合数乘一下就好了. Code: #include <cstdio> #include <algori ... 
- 4.Python IDLE使用方法详解(包含常用快捷键)
			在安装 Python 后,会自动安装一个 IDLE,它是一个 Python Shell (可以在打开的 IDLE 窗口的标题栏上看到),程序开发人员可以利用 Python Shell 与 Python ... 
- 使用Vue前端框架实现知乎日报app
			这是:主页代码 <template> <view class="content"> <view class="uni-list"& ... 
