POJ 2833 解题报告
2015-10-24 04:31
323 查看
这道题挺简单的。维护一个最小堆,一个最大堆(因为堆的大小在10以内,我猜数组也可以?)就可以了。
thestoryofsnow | 2833 | Accepted | 204K | 3391MS | C++ | 1099B |
/* ID: thestor1 LANG: C++ TASK: poj2833 */ #include <iostream> #include <fstream> #include <cmath> #include <cstdio> #include <cstring> #include <limits> #include <string> #include <vector> #include <list> #include <set> #include <map> #include <queue> // std::priority_queue #include <stack> #include <algorithm> #include <cassert> using namespace std; int main() { int n1, n2, n; priority_queue<int, std::vector<int>, std::greater<int> > greatest; priority_queue<int> least; double sum; int num, gsum, lsum; while (scanf("%d%d%d", &n1, &n2, &n) > 0 && n) { sum = 0; for (int i = 0; i < n; ++i) { scanf("%d", &num); sum += num; if (greatest.size() < n1) { greatest.push(num); } else if (num < greatest.top()) if (greatest.size() > n1) { greatest.pop(); } least.push(num); if (least.size() > n2) { least.pop(); } } n -= greatest.size() + least.size(); gsum = 0; while (!greatest.empty()) { gsum += greatest.top(); greatest.pop(); } lsum = 0; while (!least.empty()) { lsum += least.top(); least.pop(); } printf("%.6lf\n", (sum - gsum - lsum) / n); } return 0; }
相关文章推荐
- The practice of programming
- 两种观点兼顾的架构设计方法
- 初学架构设计的第一步:需求、愿景与架构
- 初学架构设计的第一步:需求、愿景与架构
- 初学架构设计的第一步:需求、愿景与架构
- Android:数据持久化(1/2)文件、SharedPreferences
- Formal System-表达逻辑:Syntax,Semantik
- ibm traveler 无法同步新邮件的问题
- (二)redis的启动和关闭
- 常用算法:分治算法、动态规划算法、贪心算法、回溯法、分支限界法
- LeetCode #24 Swap Nodes in Pairs (M)
- (一)使用源码包方式安装redis-2.8.13
- C++调用python
- C++模板与泛型编程基础
- POJ 3207 解题报告
- 界面之间的滑动
- 关于使用phpstudy搭建本地服务器,80端口被系统服务占用,不能关掉
- Centos 7 上安装 Gitlab的步骤和一些设置方法
- flexbox学习
- 5.2的Dr.com客户端启动不了,3.7的客户端提示本机未安装TCPIP协议