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

poj 2833 优先队列的应用

时间:2015-08-19 12:52:12      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

题目有提示内存限制,所以自然会想到用优先队列来维护前k大和前k小。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <queue>
 5 using namespace std;
 6 
 7 typedef long long ll;
 8 priority_queue<int, vector<int>, greater<int> > s;
 9 priority_queue<int, vector<int>, less<int> > b;
10 
11 int main ()
12 {
13     int n1, n2, n;
14     while ( scanf("%d%d%d", &n1, &n2, &n) != EOF )
15     {
16         if ( !n1 && !n2 && !n ) break;
17         ll ans = 0;
18         for ( int i = 0; i < n; i++ )
19         {
20             int tmp;
21             scanf("%d", &tmp);
22             ans += tmp;
23             if ( s.size() < n1 )
24             {
25                 s.push(tmp);
26             }
27             else
28             {
29                 if ( tmp > s.top() )
30                 {
31                     s.pop();
32                     s.push(tmp);
33                 }
34             }
35             if ( b.size() < n2 )
36             {
37                 b.push(tmp);
38             }
39             else
40             {
41                 if ( tmp < b.top() )
42                 {
43                     b.pop();
44                     b.push(tmp);
45                 }
46             }
47         }
48         while ( !s.empty() )
49         {
50             ans -= s.top();
51             s.pop();
52         }
53         while ( !b.empty() )
54         {
55             ans -= b.top();
56             b.pop();
57         }
58         double avg = ans * 1.0 / ( n - n1 - n2 );
59         printf("%.6f\n", avg);
60     }
61     return 0;
62 }

 

poj 2833 优先队列的应用

标签:

原文地址:http://www.cnblogs.com/huoxiayu/p/4741581.html

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