F - The kth great number(优先队列)
2017-07-18 14:15
169 查看
giddy. Now, try to help Xiao Bao.
InputThere are several test cases. For each test case, the first line of input contains two positive integer n, k. Then n lines follow. If Xiao Ming choose to write down a number, there will be an " I" followed by a number that Xiao Ming will write
down. If Xiao Ming choose to ask Xiao Bao, there will be a "Q", then you need to output the kth great number.
OutputThe output consists of one integer representing the largest number of islands that all lie on one line.
Sample Input
8 3 I 1 I 2 I 3 Q I 5 Q I 4 Q
Sample Output
1 2 3
Hint
Xiao Ming won't ask Xiao Bao the kth great number when the number of the written number is smaller than k. (1=<k<=n<=1000000).
本题主要的意思就是说 根据输入的以上的数据要找到第k大的数
解题思路: 卡死宝宝了作为一个渣渣生存真的真的不容易超级不容易 刚开始用sort()结果愉快的发现真的不行 好吧只能用学长昨天讲的优先队列了 哎就是优先队列 最小堆 小的在前面
然后 把超过k个数并且已经排好队了把那些小的给剔除出去
C++语言代码:
#include<iostream> #include<vector> #include<stdio.h> #include<queue> using namespace std; int main() { int n,k,i,digit; char s[2]; while(scanf("%d%d",&n,&k)==2) { priority_queue<int ,vector<int>,greater<int> >q; for(i=1;i<=n;i++) { scanf("%s",s); if(s[0]=='I') { scanf("%d",&digit); q.push(digit); if(q.size()>k) q.pop(); } else { printf("%d\n",q.top()); } } } return 0; }
相关文章推荐
- The kth great number(优先队列)
- hdoj 4006 The kth great number(优先队列)
- (转)HDOJ 4006 The kth great number(优先队列)
- 杭电 4006 The kth great number(优先队列)
- HDU 4006 The kth great number (优先队列)
- HDU-#4006 The kth great number(优先队列)
- hdu 4006 The kth great number(优先队列)
- hdu 4006 The kth great number (优先队列)
- HDU 4006 The kth great number(优先队列)
- hdu4006 The kth great number(优先队列)
- hdu 4006 The kth great number 优先队列
- hdu 4006 The kth great number(优先队列)
- hdu 4006 The kth great number (优先队列)
- hdu 4006 The kth great number(优先队列)
- HDU 4006 The kth great number(优先队列)
- 杭电4006 The kth great number(优先队列)
- HDU 4006 The kth great number (优先队列)
- hdu4006 The kth great number(优先队列)
- The kth great number(优先队列)
- HDU:4006 The kth great number(优先队列)