給出乙個長度為n的非負整數序列a[i],對於所有1 ≤ k ≤ (n + 1) / 2,輸出a[1], a[2], …, a[2k - 1]的中位數。[color=red]即[/color]前1,3,5,……個數的中位數。
輸入格式:
輸入檔案median.in的第1行為乙個正整數n,表示了序列長度。
第2行包含n個非負整數a[i] (a[i] ≤ 10^9)。
輸出格式:
輸出檔案median.out包含(n + 1) / 2行,第i行為a[1], a[2], …, a[2i – 1]的中位數。
輸入樣例#1:
71 3 5 7 9 11 6
輸出樣例#1:
1356
對於20%的資料,n ≤ 100;
對於40%的資料,n ≤ 3000;
對於100%的資料,n ≤ 100000。
用treap寫中位數。
1/*by silvern
*/2 #include3 #include4 #include5 #include6 #include7 #include8
using
namespace
std;
9const
int mxn=120010;10
intread()
13while(ch>='
0' && ch<='9')
14return x*f;15}
16int
n;17
struct
nodet[mxn];
22int nct=0,rot=0;23
void update(int
rt)27
void rturn(int &rt)
35void lturn(int &rt)
43void add(int &rt,int
v)53 t[rt].size++;
54if(t[rt].w==v) t[rt].cnt++;
55else
if(v59else
63return;64
}65int query(int rt,int
k)70
intmain()
79return0;
80 }
洛谷 P1168 中位數
題目描述 給出乙個長度為n的非負整數序列a i 對於所有1 k n 1 2,輸出a 1 a 2 a 2k 1 的中位數。color red 即 color 前1,3,5,個數的中位數。輸入輸出格式 輸入格式 輸入檔案median.in的第1行為乙個正整數n,表示了序列長度。第2行包含n個非負整數a ...
洛谷 P1168 中位數
這個題很簡單 但是我要講3種做法 我們維護乙個小根堆乙個大根堆,其中大根堆的堆頂小於小根堆的所有元素,待加入元素大於大根堆堆頂元素就加入小根堆,反之加入大根堆,然後維護兩個堆元素數量,使得兩個堆的元素數量差為1,這樣我們取兩個堆中元素多的那個的堆頂就是答案 初始化的時候先往大根堆裡加入乙個元素,避免...
洛谷 P1168 中位數
給出乙個長度為n的非負整數序列a i 對於所有1 k n 1 2,輸出a 1 a 3 a 2k 1 的中位數。color red 即 color 前1,3,5,個數的中位數。輸入格式 輸入檔案median.in的第1行為乙個正整數n,表示了序列長度。第2行包含n個非負整數a i a i 10 9 輸...