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);
}
时间: 2024-11-03 03:46:39

URAL1306 Sequence Median(卡内存神题)的相关文章

[Ural1306] Sequence Median(网上很多题解骗人,这才是对的!业界良心!)

血的教训: 1. 尽信题解,不如无题解! 2. C++ STL很坑爹.. 测试结果分析与比较: #1是我自己写的,使用priority_queue,超内存: #include <cstdio> #include <cstring> #include <algorithm> #include <queue> using namespace std; priority_queue <unsigned int> pq; int main(){ unsi

ural 1306. Sequence Median

1306. Sequence Median Time limit: 1.0 secondMemory limit: 1 MBLanguage limit: C, C++, Pascal Given a sequence of N nonnegative integers. Let's define the median of such sequence. If N is odd the median is the element with stands in the middle of the

专访卡内基梅隆大学爱德华?霍威教授

来源:<中国计算机学会通讯>2015年第3期<动态> 作者:周明 CCF自然语言处理和中文计算国际学术会议(NLPCC2014,http://tcci.ccf.org.cn/conference/2014/)于2014年12月8~9日在风景如画的深圳麒麟山庄举行.这个时节,北方已经进入寒冷的冬季,而这里却是风和日丽,草色青青.NLPCC 2014国际会议是中国在自然语言处理领域组织的级别最高.规模最大的国际学术会议.会议旨在增进自然语言处理和中文计算研究领域科研人员之间的交流.开拓

poj 2623 Sequence Median 堆的灵活运用

I - Sequence Median Time Limit:1000MS     Memory Limit:1024KB     64bit IO Format:%I64d & %I64u Submit Status Description Given a sequence of N nonnegative integers. Let's define the median of such sequence. If N is odd the median is the element with

URAL 1306 Sequence Median(优先队列)

题意:求一串数字里的中位数.内存为1M.每个数范围是0到2的31次方-1. 思路:很容易想到把数字全部读入,然后排序,但是会超内存.用计数排序但是数又太大.由于我们只需要第n/2.n/2+1大(n为偶数)或第(n+1)/2大(n为奇数).所以可以用优先队列来维护最值,这样只需要存一半元素(n/2+1个元素)就可以了. #include<cstdio> #include<algorithm> #include<queue> #define UL unsigned int

毕业真实的样本=#「卡内基梅隆大学毕业证书」原件一模一样证书

AI[卡内基梅隆大学毕业证留信网学历认证&博士&硕士&海归&本科&排名&成绩单&专业][微/Q:193282320--WeChat:bruce9328])毕业证.本科证.学生卡.学生证.留信网认证.留服网认证.学位证.学士证.硕士证.成绩单V信同荷兰瓦格宁根大学毕业证--办理联系[V 信:;193282320]全国----→ ★如果您在英.加.美.澳.欧洲等留学过程中或回国后遇到以下问题: 一.工作未确定,回国需先给父母.亲戚朋友看下的情况,办理一份

H3C查看CF卡内的文件

查看CF卡内的文件 <H3C>dir             //查看文件及目录文件 Directory of cf:/ -------------查看的是CF卡的内容      0     -rw-  13296068  Jul 10 2010 09:18:00   main.bin    1     drw-         -  Jun 08 2009 16:43:12   logfile    2     -rw-       544  Nov 15 2010 09:19:52   1

9度oj 题目1004:Median【排序水题】

题目1004:Median 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:12541 解决:3434 题目描述: Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1={11, 12, 13, 14} is 12, and the median of S2={9, 10, 15, 16, 1

1085. Perfect Sequence (25)-PAT甲级真题

1085. Perfect Sequence (25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CAO, Peng Given a sequence of positive integers and another positive integer p. The sequence is said to be a "perfect sequence" if M <= m * p where M and m