题目描述

给定一个由N个元素组成的整数序列,现在有两种操作:

1 add a

在该序列的最后添加一个整数a,组成长度为N + 1的整数序列

2 mid 输出当前序列的中位数

中位数是指将一个序列按照从小到大排序后处在中间位置的数。(若序列长度为偶数,则指处在中间位置的两个数中较小的那个)

例1:1 2 13 14 15 16 中位数为13

例2:1 3 5 7 10 11 17 中位数为7

例3:1 1 1 2 3 中位数为1

输入输出格式

输入格式:

第一行为初始序列长度N。第二行为N个整数,表示整数序列,数字之间用空格分隔。第三行为操作数M,即要进行M次操作。下面为M行,每行输入格式如题意所述。

输出格式:

对于每个mid操作输出中位数的值

输入输出样例

输入样例#1:

6
1 2 13 14 15 16
5
add 5
add 3
mid
add 20
mid
输出样例#1:

5
13

说明

对于30%的数据,1 ≤ N ≤ 10,000,0 ≤ M ≤ 1,000

对于100%的数据,1 ≤ N ≤ 100,000,0 ≤ M ≤ 10,000

序列中整数的绝对值不超过1,000,000,000,序列中的数可能有重复

每个测试点时限1秒

解法

维护中位数,两个堆

发现题解大神有拿 sort+二分查找 暴力出奇迹A题的 , 还有主席树的。

操作就是

你需要一个大根堆和一个小根堆,小根堆里面放前 N/2 个大的数,大根堆里面放后 N-N/2 大的数

这样就能保证堆顶就是 中位数

在插入的时候,把 大于 堆顶的扔到小根堆  否则扔到大根堆

当然 我们还要维护 使得两个堆大小最多差1

废话

懒得写堆当然要用priority了

小根堆写法priority_queue<int,vector<int>,greater<int> >  或者你也可以机智的把数先变成负的直接扔进priority_queue里当小根堆用

#include<bits/stdc++.h>
using namespace std;
int N,Q,cnt;
char s[];
priority_queue <int> q1,q2;
int add()
{
cnt++;
int x;
scanf("%d",&x);
if(q2.empty())q2.push(x);
else if(x<q2.top())q2.push(x);
else q1.push(-x);
while(q2.size()>cnt-cnt/){
int tmp=-q2.top();q2.pop();
q1.push(tmp);
}
while(q1.size()>cnt/){
int tmp=-q1.top();q1.pop();
q2.push(tmp);
}
}
int main()
{
scanf("%d",&N);
for(int i=;i<=N;i++)add();
scanf("%d",&Q);
while(Q--){
scanf("%s",s);
if(s[]=='a')add();
else printf("%d\n",q2.top());
}
return ;
}

吐槽

我永远也不想回到教室学习电磁感应和基因突变

最新文章

  1. TextView实现歌词同步
  2. Hadoop基础教程之重新认识Hadoop
  3. 解决IIS6.0不能下载EXE文件之妙方!
  4. POJ 3349 Snowflake Snow Snowflakes Hash
  5. Cocos2d-x游戏开发Lua
  6. 回滚 rollback
  7. uIP学习笔记
  8. 如何将mysql数据导入Hadoop之Sqoop安装
  9. Python之文件的基本操作
  10. OpenGL平面阴影
  11. python进阶之time模块详解
  12. JS解决在提交form表单时某个值不存在 alter弹窗点确定不刷新界面
  13. SQL命令入门。
  14. ibatis 多种传参方式
  15. Django开发密码管理表实例【附源码】
  16. Splunk Web页面的登录密码忘记了怎么办
  17. js精准时间迭代器(定时器)
  18. spring配置多视图解析器
  19. 如何用xmlspy将xml文档生成xsd文件
  20. [QT_FFMPEG]学习问题: 刚开始移植ffmpeg,测试时出现 undefined reference to `avcodec_configuration()&#39;

热门文章

  1. win10+ubuntu的坑
  2. poj1170 - 转换成背包
  3. Dapper Dapper-Extensions
  4. 服务器搭建域控与SQL Server的AlwaysOn环境过程(一) 搭建域控服务器
  5. 关于Python的装饰器
  6. js中获取数据类型
  7. mven系列问题
  8. 紫书 例题8-19 UVa 12265 (扫描法+单调栈)
  9. Android基础笔记(十三)- 内容提供者原理和简单使用
  10. Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)