码迷,mamicode.com
首页 > 其他好文 > 详细

中位数

时间:2019-09-22 01:15:07      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:for   names   space   ret   return   using   gre   pre   tps   

【timegate】

https://www.luogu.org/problem/P1168

【解题思路】

使用两个堆,大根堆维护较小的值,小根堆维护较大的值

即小根堆的堆顶是较大的数中最小的,大根堆的堆顶是较小的数中最大的

【code】

 1 #include <cstdio>
 2 #include <queue>
 3 #include <cmath>
 4 #include <iostream>
 5 #include <algorithm>
 6 using namespace std;
 7 int n,a;
 8 priority_queue<int> q;
 9 priority_queue<int,vector<int>,greater<int> > qq;
10 int main(){
11     scanf("%d",&n); 
12     scanf("%d",&a);
13     q.push(a);
14     printf("%d\n",a); 
15     for(register int i=2;i<=n;i++){
16         scanf("%d",&a);
17         if (a>q.top()) 
18             qq.push(a);
19         else q.push(a);
20         while (q.size()-qq.size()>1){
21             if (q.size()>qq.size()){
22                 qq.push(q.top());
23                 q.pop();
24             }
25             else{
26                 q.push(qq.top());
27                 qq.pop();
28             }
29         }
30         if (i&1) 
31             printf("%d\n",q.size()>qq.size()?q.top():qq.top());
32     }
33     return 0;
34 }

 

中位数

标签:for   names   space   ret   return   using   gre   pre   tps   

原文地址:https://www.cnblogs.com/66dzb/p/11565478.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!