http://poj.org/problem?id=2833
The AverageTime Limit: 6000MS Memory Limit: 10000K
Total Submissions: 7443 Accepted: 2288
Case Time Limit: 4000MS
Description
In a speech contest, when a contestant finishes his speech, the judges will then grade his performance. The staff remove the highest grade and the lowest grade and compute the average of the rest as the contestant’s final grade. This is an easy problem because
usually there are only several judges.
Let’s consider a generalized form of the problem above. Given n positive integers, remove the greatest n1 ones and the least n2 ones, and compute the average of the rest.
Input
The input consists of several test cases. Each test case consists two lines. The first line contains three integers n1, n2 and n (1 ≤ n1, n2 ≤ 10, n1 + n2 < n ≤ 5,000,000) separate by a single space. The second line contains n positive integers ai (1 ≤ ai ≤
108 for all i s.t. 1 ≤ i ≤ n) separated by a single space. The last test case is followed by three zeroes.
Output
For each test case, output the average rounded to six digits after decimal point in a separate line.
Sample Input
1 2 5
1 2 3 4 5
4 2 10
2121187 902 485 531 843 582 652 926 220 155
0 0 0
Sample Output
3.500000
562.500000
Hint
This problem has very large input data. scanf and printf are recommended for C++ I/O.
The memory limit might not allow you to store everything in the memory.
题目限制了内存。但是题目给的n1和n2很小
所以用优先队列或堆来维护2个最大和最小值的数组
用了3个方法,堆的效率最高。
1.直接模拟
2.队列
3.堆
用法 :http://blog.youkuaiyun.com/zsc09_leaf/archive/2011/04/10/6313716.aspx

本文介绍了一个比赛评分系统的实现方法,该系统通过去除最高和最低分数后计算选手的平均得分。文章提供了三种不同的实现方式,包括直接模拟、使用队列以及使用堆的方法,并对比了它们在时间和空间上的效率。
508

被折叠的 条评论
为什么被折叠?



