HDU - 3282 优先队列的使用
题意:
按照顺序给你n个数,当数的数量是奇数的时候就输出它们的中位数
题解:
优先队列默认是大顶堆,即priority_queue.top()是这个队列中的最大值
那么我们就可以先创造一个大顶堆优先队列qmax,和一个小顶堆qmin
qmin里面放的是大于等于中位数的数,qmax里面放的是比中位数小的数
因为qmin是小顶堆,那么qmin.top()肯定就是中位数
(上面的话是在中位数的前提下)
代码:
1 #include <bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 int t;
6 scanf("%d",&t);
7 while(t--)
8 {
9 priority_queue<int > qmax; //大顶堆
10 priority_queue<int ,vector<int > ,greater <int > >qmin; //小顶堆
11 int cnt;
12 int n;
13 scanf("%d%d",&cnt,&n);
14 printf("%d %d\n",cnt,(n/2+1));
15 for(int i=1;i<=n;i++)
16 {
17 int mid;
18 scanf("%d",&mid);
19 if(qmin.size()==0)
20 qmin.push(mid);
21 else
22 {
23 if(mid>qmin.top())
24 qmin.push(mid);
25 else qmax.push(mid);
26 }
27 while(qmin.size()!=qmax.size() && qmin.size()!=qmax.size()+1) //这两个条件任意一个不满足就要跳出来
28 {
29 if(qmax.size()>qmin.size())
30 {
31 int x=qmax.top();
32 qmax.pop();
33 qmin.push(x);
34 }
35 else
36 {
37 int x=qmin.top();
38 qmin.pop();
39 qmax.push(x);
40 }
41 }
42 /*
43 经过上面的while处理后,qmin里面放的是大于等于中位数的数,qmax里面放的是比中位数小的数
44 因为qmin是小顶堆,那么qmin.top()肯定就是中位数
45 (上面的话是在中位数的前提下)
46 */
47 if(i&1)
48 cout << qmin.top();
49 if((i+1)%20==0||i==n)
50 cout << endl;
51 else if(i&1)
52 cout << " ";
53 }
54 }
55 return 0;
56 }
HDU - 3282 优先队列的使用的更多相关文章
- hdu 3282 Running Median
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3282 Running Median Description For this problem, you ...
- HDU 3282 Running Median 动态中位数,可惜数据范围太小
Running Median Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- hdu 5306 优先队列
用到优先队列 #include<iostream> #include<string> #include<algorithm> #include<cstdio& ...
- HDU 4006 优先队列
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- hdu 5818 (优先队列) Joint Stacks
题目:这里 题意: 两个类似于栈的列表,栈a和栈b,n个操作,push a x表示把数x放进a栈的栈底,pop b 表示将栈b的栈顶元素取出输出,并释放这个栈顶元素,merge a b表示把后面的那个 ...
- hdu 4302 优先队列
进一步学习了优先队列的用法 题意:一只小动物在直线上走,起始位置为零,之后会出现食物,动物要去距离自己最短的食物那,若两边的食物距离相等,则选择之前走的方向的食物 0 x,代表x的位置出现了食物,1代 ...
- hdu 4393 优先队列
用优先队列储存每个人的初始距离和编号,每轮求出最快的人,然后pop掉 一开始想遍历队列的,后来发现队列没办法遍历,汗-_-! 题意,给几个第一秒冲出的距离和以后速度,求每秒后最前面人的编号,求完后最前 ...
- HDU 1058 优先队列or堆
本来应当是一道优先队列或者堆的题 因为每个数都应该是已经得到的数*2 *3 *5 *7而得到的 但是 2*7 大于 3*2 这就必须保证每次取得都是没有拿过的最小的数 但是它主动降低难度在样例里卖了个 ...
- hdu 2258 优先队列
Continuous Same Game (1) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
随机推荐
- Jenkins上实现Python + Jenkins + Allure Report 接口自动化测试持续集成,最终测试报告用allure-report进行展示
项目介绍 接口功能测试应用:http://www.weather.com.cn/data/cityinfo/<city_code>.html 测试功能:获取对应城市的天气预报 源码:Pyt ...
- 拍摄、剪辑vlog的思路
这篇文章是看了很多狂阿弥_ 的作品后 产生的一些小小总结.这些技法只是锦上添花,阿弥作品真正好的地方在于他细腻的情感,真实的对白,和打动人心的满分作文. 优秀的Vlog ,在于它和观众产生的情感共鸣. ...
- Redis 5 配置 Redis sentinel(哨兵模式)
先了解一下哨兵都 做了什么工作:Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: * 监控(Monitoring): Sentin ...
- QT串口助手(三):数据接收
作者:zzssdd2 E-mail:zzssdd2@foxmail.com 一.前言 开发环境:Qt5.12.10 + MinGW 实现的功能 串口数据的接收 ascii字符形式显示与hex字符形式显 ...
- 阿里云OSS对象存储服务(一)
一.开通"对象存储OSS"服务 申请阿里云账号 实名认证 开通"对象存储OSS"服务 进入管理控制台 二.控制台使用 1.创建Bucket 命名:guli-fi ...
- SUGA
愿试炼的终点是花开万里 愿以渺小启程伟大结束 ----闵玧其
- 30分钟带你了解「消息中间件」Kafka、RocketMQ
消息中间件的应用场景 主流 MQ 框架及对比 说明 Kafka 优点 Kafka 缺点 RocketMQ Pulsar 发展趋势 各公司发展 Kafka Kafka 是什么? Kafka 术语 Kaf ...
- 开心!再也不用担心 IntelliJ IDEA 试用过期了
背景 前段时间 Review 团队小伙伴代码,发现当他把鼠标挪到一个方法上时,就自动显示了该方法的所有注释信息,像下图这样,他和我用的 IDE 都是 IntelliJ IDEA. 而我还按古老的方式, ...
- 01. struts2介绍
struts2优点 与Servlet API 耦合性低.无侵入式设计 提供了拦截器,利用拦截器可以进行AOP编程,实现如权限拦截等功能 支持多种表现层技术,如:JSP.freeMarker.veloc ...
- feign使用okHttpClient,调用原理
最近项目中 spring cloud 用到http请求,使用feign,配置okhttp,打算配置一下就直接使用,不过在压测与调优过程中遇到一些没有预测到的问题,附上排查与解析结 yml.pom配置 ...