URAL1306 Sequence Median(卡内存神题)
Posted yfceshi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了URAL1306 Sequence Median(卡内存神题)相关的知识,希望对你有一定的参考价值。
给出n个数,n<=250000,求这n个数的中位数,内存限制1mb
卡内存的神题,用数组存下来刚好1mb,再加上执行时消耗内存。立即爆。
因此我们用优先队列存储一半的数。
网上的某些代码,用priority_queue全爆内存。
我存的125000长度的数组。加上STL的make_heap()
#include<cstdio> #include<queue> using namespace std; int a[125010]; int main() { int n,x; double ans; scanf("%d",&n); for(int i = 0; i < n/2+1; i++) scanf("%d",&a[i]); make_heap(a,a+n/2+1); for(int i = n/2+1; i < n; i++) { scanf("%d",&x); if(x<a[0]) { pop_heap(a,a+n/2+1); a[n/2] = x; push_heap(a,a+n/2+1); } } if(n&1) ans = (double)a[0]; else { ans = (double)a[0]; pop_heap(a,a+n/2+1); ans += (double)a[0]; ans = ans/2.0; } printf("%.1lf\n",ans); }
以上是关于URAL1306 Sequence Median(卡内存神题)的主要内容,如果未能解决你的问题,请参考以下文章
URAL1081 Binary Lexicographic Sequence(递归)