ural 1306. Sequence Median
2012-04-02 14:57
190 查看
思路:此题不能存储所有元素,否则会MLE,想到用优先队列(默认值大的优先级高),存储一半,剩下的一半依次和队首比较,若小于队首,则将队首元素出队,新元素入队。
最后,若n为奇数,队首元素即为中间值;n为偶数,队列前两个的平均值为答案。
最后,若n为奇数,队首元素即为中间值;n为偶数,队列前两个的平均值为答案。
#include <iostream> #include <cstdio> #include <algorithm> #include <vector> #include <queue> using namespace std; typedef unsigned int lint; priority_queue<lint> pq; int main() { int i, n; lint val, t; scanf("%d", &n); for (i = 0; i <= n/2; ++i) { scanf("%d", &val); pq.push(val); } for (; i < n; ++i) { scanf("%d", &val); t = pq.top(); if (val < t) { pq.pop(); pq.push(val); } } double ans; if (n&1) ans = pq.top(); else { ans = pq.top(); pq.pop(); ans += pq.top(); ans /= 2.0; } printf("%.1lf\n", ans); return 0; }
相关文章推荐
- URAL 1306. Sequence Median
- ural 1306. Sequence Median(优先级队列 priority_queue用法)
- ural 1306. Sequence Median(优先队列)
- ural 1306 Sequence Median
- Ural 1306 Sequence Median
- Ural 1306. Sequence Median
- URAL 1306-Sequence Median(堆)
- ural 1306. Sequence Median
- ural 1306. Sequence Median(优先级队列 priority_queue用法)
- Ural_1306. Sequence Median(堆)
- URAL 1306. Sequence Median(优先队列)
- Ural 1306. Sequence Median
- ural 1306. Sequence Median
- URAL 1306 - Sequence Median 小内存求中位数
- ural 1306【priority_queue+堆查找中间值】
- ural 1306(堆-优先级序列)
- ural 1306 堆排序找中位数
- ural 1306 (heap推排序)
- ural 鹰蛋&51nod 1306
- URAL 1091 Tmutarakan Exams