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

news2025/7/16 15:21:47

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

杭电OJ 题目地址

在这里插入图片描述

【题意】

小明和小宝正在玩数字游戏。游戏有n轮,小明在每轮中都可以写一个数,或者问小宝第k 大的数是什么(第k 大的数指有k -1个数比它大)。

游戏格式为:

  • I c ,表示小明写下一个数c ;
  • Q,表示小明问第k 大的数。

请对小明的每个询问都给出第k 大的数。

【输入输出】

输入:

输入包含多个测试用例。每个测试用例的第1行都包含两个正整数n 、k (1≤k ≤n ≤1000000),表示n 轮游戏和第k 大的数。然后是n 行,格式为I c 或Q。

输出:

对每个询问Q,都单行输出第k 大的数。

【样例】

在这里插入图片描述

提示: 当写下的数字个数小于k 个时,小明不会问小宝第k 大的数。

【思路分析】

这道题数据范围很大,直接暴力肯定超时,因此可以借助优先队列实现。

【算法设计】

① 使用优先队列(最小值优先)存储最大的k 个数。

② 插入。若队中元素个数小于k ,则直接入队;若当前输入元素大于队头,则队头出队,当前元素入队。

③ 查询。队头(堆顶)就是第k 大的数,输出即可。

【举个栗子】

根据输入样例,操作过程如下。

① 插入。I 1:元素个数小于3,直接入队。I 2:元素个数小于3,直接入队。I 3:元素个数小于3,直接入队。

在这里插入图片描述

② 查询。查询第3大的数,队头1为第3大的数。数字3是第1大。

③ 插入。I 5:元素个数不小于3,5比队头大,则队头出队,5入队。

在这里插入图片描述

④ 查询。查询第3大的数,队头2为第3大的数。

⑤ 插入。I 4:元素个数不小于3,4比队头大,则队头出队,4入队。

在这里插入图片描述

⑥ 查询。查询第3大的数,队头3为第3大的数。

【算法实现】

#include<iostream>
#include<cstdio>
#include<functional>//提供比较函数greater<int> 
#include<queue>

using namespace std;

int main(){
	
    int i,n,k,num;
    char c;
    priority_queue<int,vector<int>,greater<int> >q;//小顶堆 
    while(~scanf("%d%d",&n,&k)){
        while(q.size())//初始化队列为空 
			q.pop();             
        for(i=1;i<=n;i++){
	        cin>>c;
	        if(c=='I'){
	            scanf("%d",&num);
	            if(q.size()<k) //堆中元素个数小于k
	            	q.push(num);
	            else if(q.top()<num) //当堆顶小于输入元素时
	            	q.pop(),q.push(num);//堆顶出队,元素入队
	        }                        //堆中永远保存最大的k个元素 
	        else
	        	printf("%d\n",q.top()); //堆顶即为第k大元素
        }
    }
    
    return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/17585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

运维开发实践 - Docker - 容器实现原理

1.Docker容器是什么 按照Docker官网&#xff0c;容器是运行在宿主机上的一个进程&#xff0c;但与宿主机上的其他进程相隔离&#xff1b; 2.容器实现原理 这种隔离机制使用了内核中的namespace和cgroups功能&#xff1b; 2.1.Linux namespace Linux通过将系统的资源放置在…

Redis数据类型之string

文章目录stringⅠ. 增删查改Ⅱ. 加减操作Ⅲ. 数据生命周期Ⅳ. 业务场景 - 高频数据Ⅴ. 注意事项提示&#xff1a;以下是本篇文章正文内容&#xff0c;Redis系列学习将会持续更新 string ● 存储的数据&#xff1a;单个数据&#xff0c;最简单的数据存储类型&#xff0c;也是最常…

Paket在Linux下使用问题

1. 系统软件版本 Linux系统&#xff1a;Debian 10&#xff0c;需安装mono-devel Paket版本&#xff1a;7.1.5 关于Paket的介绍&#xff1a;https://github.com/fsprojects/Paket Paket的发布版本&#xff1a;https://github.com/fsprojects/Paket/releases 2. 使用方法 将…

原来背后都是商业利益,看到网易和暴雪的解约之后,原来是要定以后的KPI,坐地起价,但是一个时代已经结束了,都留在了记忆之中

1&#xff0c;大瓜新闻&#xff0c;2023年1月暴雪游戏中国将不会续约&#xff1f;&#xff1f; 2&#xff0c;原因是主要坐地起价&#xff0c;提高分成设置KPI 还好网易有自研游戏&#xff0c;估计早知道会有现在这样的情况。 提前做好了准备。还记得有个公司叫 九城吗&#x…

Linux操作系统~带你理解文件系统与软硬链接

目录 1.C语言中的FILE和文件描述符对应的file 2.Linux的EXT系列的文件系统 &#xff08;1&#xff09;.block group中六个部分的内容 inode索引结点相关 Q&#xff1a;这两个inode有什么不同&#xff1f; &#xff08;2&#xff09;.一个文件的inode和对应的block如何关联…

off-by-one (b00ks)

前言 个人简略记录&#xff0c;过程不详细 gdb开始调试 vmmap查看程序基地址为 0x555555400000 继续运行&#xff0c;输入auth search hollk关键字&#xff0c;auth存放的地址可以找出为&#xff1a;0x555555602040 圈起来的是溢出的 \x00 创建两个books 因为图书的结构体指…

数据库以及数据库常用概念、ER模型相关概念

目录 1.我们为什么要学习数据库&#xff1f; 2.数据库的相关概念&#xff1a; 2.关系型数据库和非关系型数据库的区别 A.关系型数据库&#xff1a; B.非关系型数据库&#xff1a; C.非关系型数据库的相关类别有以下几种&#xff1a; 3.关系型数据库设计规则 4.表、记录、…

华为数据中心VS技术理论讲解

目录 VS之间的关系 VS的配置管理权限 VS之间、VS与外部通信 VS资源分配 VS与其它技术的联合部署 VS的创建和删除 VS&#xff08;Virtual System&#xff09;虚拟系统是指将一台物理设备虚拟成多个相互隔离的逻辑设备 逻辑设备之间软硬件隔离&#xff0c;互不影响&#xff…

立体式校验保护,让你的系统避免 90% 以上的 bug

1. 概览 在实际开发过程中&#xff0c;数据校验是最为重要的一环&#xff0c;问题数据一旦进入系统&#xff0c;将对系统造成不可估量的损失。轻者&#xff0c;查询时触发空指针异常&#xff0c;导致整个页面不可用&#xff1b;重者&#xff0c;业务逻辑错误&#xff0c;造成流…

为了买个硬盘,我专门写了篇笔记

文章目录SSD是固态硬盘的一些参数插槽接口总线类型传输协议插槽接口/总线/协议关联参考连接HDD是机械硬盘&#xff1b;SSD是固态硬盘。 SSD是固态硬盘的一些参数 插槽接口 外观不同而已&#xff1b;插槽接口不影响传输速度&#xff0c;但是插槽接口不适配的话是肯定插不到电脑…

力扣(LeetCode)12. 整数转罗马数字(C++)

模拟 罗马数字和掰手指数数的区别在于&#xff0c;IV/IXIV/IXIV/IX 这类倒着数数的&#xff0c;和阿拉伯数字最大的区别在于 555 的 10k10^k10k 倍 k∈Nk\isin Nk∈N &#xff0c;需要被表示出来。所以除了记录 I/X/C/MI/X/C/MI/X/C/M ——1/10/100/10001/10/100/10001/10/100…

activiti-image-generator

activiti-image-generator目录概述需求&#xff1a;设计思路实现思路分析1.ActivitiImageException2.ProcessDiagramGenerator3.ProcessDiagramSVGGraphics2D4.ProcessDiagramDOMGroupManager5.DefaultProcessDiagramGenerator参考资料和推荐阅读Survive by day and develop by…

Smart point智能指针(part.1)

1&#xff1a;为什么出现智能指针   为了避免多个指针指向一个对象的时候 销毁其中一个point 其他的point就会变成空point 或者多次删除被指向对象而发生报错   或者单纯删除指针 不删除其指向的对象 当最后一个指向对象被删除的时候 对象依然存在 造成资源泄露  智能指针…

MATLAB continue语句

详细例子&#xff1a; 在MATLAB中建立一个脚本文件&#xff0c;并输入下述代码&#xff1a; a 10; %while loop execution while a < 20if a 15% skip the iteration a a 1;continue;endfprintf(value of a: %d , a);a a 1; end 运行该文件&#xff0c;显示下…

unet医学肺部ct图分割简单记录

UNet医学图像分割 说明&#xff1a; 本项目采用pytorch——gpu——cuda11.6本项目用的UNet网络架构一、硬件&#xff1a; Windows GPU 二、软件环境安装&#xff1a; pytorchNibabel 三、用法&#xff1a; 医学数据采集为kaggle的官网新冠肺炎ct图数据预处理&#xff1a;1…

青少年python系列 45.文件操作1

青少年python系列目录_老程序员115的博客-CSDN博客 青少年python教学视频ppt源码 在计算机信息时代&#xff0c;我们知道文本文件可存储的数据量多得难以置信&#xff0c;例如气象站的天气数据、交管部门的交通数据、金融商业街的社会经济数据、电子图书馆或博物馆的文学作品等…

做斗音都要经历的几个时期,你目前处于哪个阶段呢?

大家好&#xff0c;我是我赢助手&#xff0c;专注于自媒体短视频去水印、去重和文案提取运营。 今天给大家分享下做斗音的几个时期 1、兴奋期 听别人说斗音遍地是黄金开始到处学艺买资料准备大干一场。 这时是最关键的&#xff0c;能学到可以实操的项目才是最重要的&#x…

施耐德PLC TM218如何实现远程上传下载程序?

施耐德TM218支持IEC61131-3标准的六种编程语言&#xff0c;具备模块化、结构紧凑、功能全面等特点&#xff0c;在工业控制领域应用广泛&#xff0c;是市场上常见的产品之一&#xff0c;性价比较高。 因此&#xff0c;对于采购施耐德PLC的企业来说&#xff0c;通过PLC程序的上下…

【18-业务开发-基础业务-商品模块-分类管理-前后端管理系统的启动-为分类管理表增加数据-Json插件的下载-返回具有层级目录、父子关系结构的数据】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了&#xff0c;请点击这里&#xff01;】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

内网渗透神器CobaltStrike之DNS Beacon(四)

DNS隧道简介 利用DNS隧道进行攻击的现象已存在多年&#xff0c;将数据封装在DNS协议中传输&#xff0c;大部分防火墙和入侵检测设备很少会过滤DNS流量&#xff0c;僵尸网络和入侵攻击可几乎无限制地加以利用&#xff0c;实现诸如远控、文件传输等操作 DNS隐蔽隧道建立通讯并盗…