两种方法做:优先队列和SBT。

先说说SBT吧。。。。

/*************************************************
题目大意:
针对每次查询,输出第K大数;算法思想:(1)根据题意可知,只需保留前K个大数,并且按降序排列;
也就是说每加入一个数就找到这个数的位置;
然后将大于K个元素之外的数删除;
利用优先级队列就可以很好的做到;(2)SBT或者树状数组解决;
**************************************************/
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
using namespace std;const int N=1000010;
int l[N],r[N],s[N];
int key[N];
int node;void left_rotate(int &t)
{int k=r[t];r[t]=l[k];l[k]=t;s[k]=s[t];s[t]=s[l[t]]+s[r[t]]+1;t=k;
}void right_rotate(int &t)
{int k=l[t];l[t]=r[k];r[k]=t;s[k]=s[t];s[t]=s[l[t]]+s[r[t]]+1;t=k;
}void maintain(int &t,bool flag)
{if(flag==false){if(s[l[l[t]]]>s[r[t]])right_rotate(t);else if(s[l[r[t]]]>s[r[t]]){left_rotate(t);right_rotate(t);}elsereturn ;}else{if(s[r[r[t]]]>s[l[t]])left_rotate(t);else if(s[r[l[t]]]>s[l[t]]){right_rotate(t);left_rotate(t);}elsereturn ;}maintain(l[t],false);maintain(r[t],true);maintain(t,false);maintain(t,true);
}void insert(int &t,int k)
{if(!t){s[t=++node]=1;l[t]=r[t]=0;key[t]=k;}else{++s[t];if(key[t]>k)insert(l[t],k);elseinsert(r[t],k);maintain(t,k>=key[t]);}
}int select(int t,int k)
{int v=s[l[t]]+1;if(k==v)return key[t];else if(k<v)return select(l[t],k);elsereturn select(r[t],k-v);
}int main()
{int n,k;while(~scanf("%d%d",&n,&k)){int u=node=s[0]=0;while(n--){char c;int x;scanf(" %c",&c);if(c=='I'){scanf("%d",&x);insert(u,x);}elseprintf("%d\n",select(u,s[u]+1-k));}}return 0;
}

然后优先队列也可以:

#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstdio>
#include<queue>
using namespace std;int main()
{int n,k;while(~scanf("%d%d",&n,&k)){priority_queue<int,vector<int>,greater<int> > Q;for(int i=1;i<=n;i++){char c;scanf(" %c",&c);if(c=='I'){int x;scanf("%d",&x);Q.push(x);if(Q.size()>k)Q.pop();}elseprintf("%d\n",Q.top());}}return 0;
}

HDU4006(The kth great number)相关推荐

  1. hdu4006: The kth great number

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4006 参考思路:这道求第k大的数比较有特点,我们可以用一个优先级队列来完成同态的求第k大的数,优先级队 ...

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

    题目链接 题意 可以执行两种操作: (1). I I I:向数字序列中添加一个数字; (2) Q Q Q:询问数字序列中的k大的数是多少,执行此操作后打印第k大的数; 思路 用优先队列保存序列中的数字 ...

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

  4. LeetCode hard 668. Kth Smallest Number in Multiplication Table(二分答案)

    题目:https://leetcode.com/problems/kth-smallest-number-in-multiplication-table/description/ Kth Smalle ...

  5. #4604. The kth maximum number(整体二分 + 树套树)

    #4604. The kth maximum number 给定一个大小不超过5×1055 \times 10 ^ 55×105的矩形区域,有一些点有点权. 每次询问给定x1,y1,x2,y2,kx_ ...

  6. 【HDU - 4006】The kth great number (优先队列,求第k大的数)

    题干: Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to wri ...

  7. *【HDU - 4006】 The kth great number(优先队列 or 线段树)

    题干: Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to wri ...

  8. 蓝桥杯练习【STL训练】——The kth great number

    题目描述: Xiao Ming and Xiao Bao are playing a simple Numbers game. In a round Xiao Ming can choose to w ...

  9. 【HDU No. 4006】 第k 大的数 The kth great number

    [HDU No. 4006] 第k 大的数 The kth great number 杭电OJ 题目地址 [题意] 小明和小宝正在玩数字游戏.游戏有n轮,小明在每轮中都可以写一个数,或者问小宝第k 大 ...

最新文章

  1. SAP MM 物料库存转固定资产业务操作以及相关财务凭证
  2. 我用nagios-check_http check Checker
  3. python无法启动该程序因为计算机中丢失_python报错:无法启动此程序,因为计算机中丢失...
  4. 【Machine Learning实验2】 Logistic Regression求解classification问题
  5. OpenCV霍夫变换的演示代码(附完整代码)
  6. 遥感图像数据类型的区别
  7. Intelj IDEA的pom.xml显示错误can not reconnect
  8. 成都电子神技大学模拟题(取模运算)
  9. php中的date()函数d y m l等字母的表示方法
  10. jdbc连接数据库以及crud(简单易懂,本人亲测可用 有源代码和数据库)
  11. PGP加密解密QQ邮箱邮件
  12. 【接口测试用例设计思路】
  13. 存储区域网络(SAN)概念和设计基础
  14. PxCook的基本使用
  15. apache启动失败原因
  16. hadoop运行程序时报错java.net.ConnectException: java.net.ConnectException: 拒绝连接;
  17. 顶级赛事!2021 CCF大数据与计算智能大赛重磅开赛!
  18. 安装ubuntu系统16.04版本
  19. 交友结婚的原则[转贴]
  20. 基于proteus8的8086与8255控制8位数码管显示

热门文章

  1. 案例:返回浏览器需要的页面http服务器-代码实现
  2. 代理模式coding-静态代理
  3. oracle11g同步,Oracle11g三种数据同步方式-Oracle
  4. 写csv文件_机器学习Python实践——数据导入(CSV)
  5. python超市管理系统_控制台超市系统(Python)
  6. 同步与异步、并行与并发、阻塞与挂起
  7. 210314阶段三VS使用Linux 的sqlite3 API
  8. 无刷电机和有刷电机的详解区别
  9. 退耦电容,旁路电容和滤波电容的一些区别?
  10. Android 设计模式 - 装饰者模式