洛谷 P1168 中位数
题目链接:中位数
思路
由于需要查询的是输入奇数个数字时的中位数,所以可以将输入的第一个数字初始化为默认的mid,然后再输入数据时将小于mid的元素加入大根堆,大于等于mid的元素加入小根堆,当输入到奇数个元素时,就可以判断当前大小根堆中的元素个数是否相等,相等则可以输出当前的mid,否则将mid加入较少元素的堆,将较多元素的堆取出元素,赋值给mid,重复操作知道两个堆元素个数相等,即可输出mid。
代码
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5 + 10; ll account[N]; // 大顶堆,默认也是大顶堆 priority_queue<ll, vector<ll>, less<ll>> les; // 小顶堆 priority_queue<ll, vector<ll>, greater<ll>>gre; int main() { ll n, m, mid; cin >> n; cin >> account[1]; mid = account[1]; cout << mid << endl; for (int i = 2; i <= n; i++) { cin >> account[i]; if (account[i] < mid) { les.push(account[i]); } else { gre.push(account[i]); } if (i % 2) { while (les.size() > gre.size()) gre.push(mid), mid = les.top(), les.pop(); while (les.size() < gre.size()) les.push(mid), mid = gre.top(), gre.pop(); if (les.size() == gre.size()) cout << mid << endl; } } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」