Gravatar
dateri
积分:1305
提交:587 / 1302
priority_queueEEEE,make_heapMMMMMM,最后push_heap过了。。求大神解

Gravatar
liu_runda
积分:2889
提交:1014 / 2190
同样的代码,昨天1.7s,今天4s多。。。评测机老人家心情不好啊

Gravatar
liu_runda
积分:2889
提交:1014 / 2190
手写一个堆,保存较小(较大)的一半元素。输入到后一半时更新堆,使堆的大小保持在n/2,但仍保存较小的一半元素。最后堆顶的两个元素就是“较小的一半元素中最大的两个”(或“较大的一半元素中最小的两个”),求中位数很简单了。
顺便,输入后一半时先判断输入的元素是否会造成堆结构实质变化再进行更新可以快那么零点几秒。

Gravatar
‎MistyEye
积分:2487
提交:850 / 1904
用堆 存一半数

Gravatar
liu_runda
积分:2889
提交:1014 / 2190

Gravatar
Sky_miner
积分:2790
提交:902 / 1646

Gravatar
Hzoi_
积分:1680
提交:530 / 743
根据计算,2MB*1024*1024/4B=524288(个)
也就是说,理论上开一个500000的数组是可行的。
(虽然实践中会爆内存...)

Gravatar
Riolu
积分:1074
提交:435 / 772

Gravatar
GaoErFu
积分:493
提交:289 / 1158
加了这个了内存限制,这题早就超于半星了,不会呀。。

Gravatar
+1s
积分:569
提交:285 / 1051

5分
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("median.in");
ofstream fout("median.out");
int *arr=NULL,len;
int main()
{
int index=0;
float ans;
fin>>len;
arr=new int[len];
for(int i=0;i<len;i++)
{
fin>>arr[i];
}
sort(arr,arr+len);
if(len%2)
{
index=len/2;
ans=arr[index];
}
else
{
index=len/2-1;
ans=(int)(10.0*((arr[index]+arr[index+1])/2.0)+0.5)/10.0;
}
if(ans!=(float)(arr[index]+arr[index+1])/2)
fout<<ans<<".0";
else
fout<<ans;
delete arr;
arr=NULL;
return 0;
}

题目 1699 中位数
2015-10-10 16:17:26
Gravatar
+1s
积分:569
提交:285 / 1051
@!¥%#……¥%@……&*……%¥#¥……¥内存出错

题目 1699 中位数
2015-10-10 15:42:11
Gravatar
NVIDIA
积分:1171
提交:301 / 546
这肯定是抄的啊
#include<??????????>
#include <cstdio>
#include <algorithm>
#define LOCAL
using namespace std;
int main()
{
#ifdef LOCAL
freopen("median.in","r",stdin);
freopen("median.out","w",stdout);
#endif
int N, half, i;
int temp, data[ 250001 ];
scanf( "%d", &N );
half = N / 2 + 1;
for ( i = 0; i < half; i++ )
scanf( "%d", &data[ i ] );
make_heap( data, data + half );
while ( i++ < N ) {
scanf( "%d", &temp );
if ( temp < data[ 0 ] ) {
pop_heap( data, data + half );
data[ half - 1 ] = temp;
push_heap( data, data + half );
}
}
printf( "%.1f\n", N % 2 == 1 ? (float)data[ 0 ]: ( (float)data[ 0 ] + max( data[ 1 ], data[ 2 ] ) ) / 2 );
return 0;
}

题目 1699 中位数
2015-09-10 21:33:22
Gravatar
O(1)
积分:310
提交:167 / 482
输出和答案一致,但运行时错误不让过,怎么搞

题目 1699 中位数
2015-04-01 12:40:37
Gravatar
水中音
积分:1266
提交:406 / 833
下的数据明明有好好输出结果啊…欧卡西……

题目 1699 中位数
2014-09-13 17:13:12