洛谷题单指南-二叉堆与树状数组-P1168 中位数

news/2024/11/8 17:28:41/文章来源:https://www.cnblogs.com/jcwy/p/18534554

原题链接:https://www.luogu.com.cn/problem/P1168

题意解读:中位数就是位于中间的数,前1个数的中位数是第1个,前3个数的中位数是第2个,前5个数的中位数的第3个...以此类推。

所以,此题本质上就是动态维护一组数,每1/3/5...等奇数个取第k小的数,取一次后k++。

解题思路:

要动态维护数据,且每次取第k小的数,又有多种做法:快选、平衡树、双堆,这里依然采用双堆做法:

定义一个小根堆,一个大根堆,确保小根堆的堆顶大于大根堆的堆顶,大根堆的元素个数保持在k-1个,这样每次取小根堆的堆顶即是第k小的数。

本题和P1801 黑匣子本质上是一样的。

100分代码:

#include <bits/stdc++.h>
using namespace std;const int N = 100005;
int n, a;
priority_queue<int> q1; //大根堆
priority_queue<int, vector<int>, greater<int>> q2; //小根堆
int cnt;int main()
{cin >> n;for(int i = 1; i <= n; i++){cin >> a;q1.push(a);if(q1.size() > cnt) //如果大根堆超过cnt个{q2.push(q1.top()); //将大根堆堆顶移至小根堆q1.pop();}if(i % 2 == 1) //每奇数个{cout << q2.top() << endl; //输出第cnt+1小的值cnt++; //cnt下次+1if(q1.size() < cnt) //如果大根堆不足cnt个{q1.push(q2.top()); //将小根堆堆顶移至大根堆q2.pop();}}}return 0;
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx反向代理之proxy_redirect指令【转】

proxy_redirect 该指令是用来重置头信息中的"Location"和"Refresh"的值。 语法:proxy_redirect redirect replacement; proxy_redirect default; proxy_redirect off;默认值: proxy_redirect default; 编写位置:它可以存储在http、server、location里面…

嵌入式采集网关(golang版本)

为了一次编写到处运行,使用纯GO编写,排除CGO,解决在嵌入式中交叉编译难问题硬件设备:移远EC200A-CN LTE Cat 4 无线通信模块,搭载openwrt操作系统,90M内存qq:505645074

tag

最近遇到的某些面试官我:

长尾效应

在正态分布中,曲线中间凸起的是“头”,两边相对平缓的部分叫做“尾”。 对于绝大部分的需求来说,都会集中在中间凸起的“头”处,但是除了“头”,还有两边长长的“尾”。不同于中间的“头”,分布在尾部的需求是个性化的,零散的,少量的需求。这部分需求,构成了一条长长的…

树莓派开机自启动热点(使用有线eth0上网,使用wlan0进行热点)

一、背景内容 其实就是接了一单,有人需要我帮忙配置一下树莓派开机启动热点。这边做个记录,该方式树莓派4B、3B都可以使用。 二、实际操作 1、使用网线连接路由器和树莓派 树莓派的网络接口一共有三个,分别是:eth0:有线网络接口(以太网接口) wlan0:无线网络接口(WiFi接…

07C++选择结构(1)

1、基础知识; 2、if语句; 3、if-else 语句; 4、if语句嵌套; 5、字符串类型string一、基础知识 1、关系运算符 因为我们要对条件进行判断,必然会用到关系运算符:名称 大于 大于等于 小于 小于等于 等于 不等于符号 > >= < <= == !=关系表达式的值是一个逻辑值…

测试开发通关秘籍五: 彻底搞懂map,reduce和filter高阶函数

热爱技术的小牛 测试开发通关秘籍五: 彻底搞懂map,reduce和filter高阶函数 map、r测试开发通关秘籍五: 彻底搞懂map,reduce和filter高阶函数 map、reduce 和 filter 是 Python 中用于处理可迭代对象(如列表、元组等)的高阶函数。它们分别用于不同的操作,适合于不同的场景…

2024.11.8 鲜花

sosdp,FMT,FWT 下Moon Halo Some deserts on this planet were oceans once 这颗星球上的一些沙漠曾是海洋 Somewhere shrouded by the night, the sun will shine 被黑夜笼罩的地方,也会迎来光明 Sometimes I see a dying bird fall to the ground 偶尔也会见到濒死的鸟跌落地…

DB157S-ASEMI小贴片整流桥DB157S

DB157S-ASEMI小贴片整流桥DB157S编辑:ll DB157S-ASEMI小贴片整流桥DB157S 型号:DB157S 品牌:ASEMI 封装:DBS-4 特性:贴片桥堆 正向电流:1.5A 反向耐压:1000V 恢复时间:>2000ns 引脚数量:4 芯片个数:4 芯片尺寸:50MIL 浪涌电流:50A 漏电流:>10uA 工作温度:-55…

数码管驱动控制器-VK1638 SOP28点阵数显驱动芯片LED驱动器原厂FAE技术支持

产品品牌:永嘉微电/VINKA 产品型号:VK1638 封装形式:SOP28 概述 VK1638是一种带键盘扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有3线 串行接口、数据锁存器、LED 驱动、键盘扫描等电路。SEG脚接LED阳极,GRID脚接LED阴 极,可支持10SEGx8GRID的点阵LED显示面板,…

从消息中间件架构发展趋势,探讨物联网平台如何支持亿级设备推送?

华为云IoT不仅仅深度使用了Apache Pulsar,同时还积极参与Pulsar社区的发展,致力于提升Pulsar的安全性、可靠性和功能性。本文分享自《华为云DTSE》第五期开源专刊,作者:贺张俭 华为云IoT技术专家 随着物联网平台业务的快速增长,基于传统消息中间件构筑面临着处理亿级设备连…

docker desktop报错0x80070422

docker desktop报错0x80070422 deploying WSL2 distributionsensuring main distro is deployed: deploying "docker-desktop":importing WSL distro"无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。\r\n错误代码:Ws1/0x80070422\r\n"outpu…