P1168 中位数 堆】的更多相关文章

[luogu]P1168 中位数 题目描述 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[3], …, A[2k - 1]的中位数.即前1,3,5,……个数的中位数. 输入输出格式 输入格式: 输入文件median.in的第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数A[i] (A[i] ≤ 10^9). 输出格式: 输出文件median.out包含(N + 1) / 2行,第i行为A[1], A[3], …, A[2…
题目描述 给出一个长度为NNN的非负整数序列AiA_iAi​,对于所有1≤k≤(N+1)/21 ≤ k ≤ (N + 1) / 21≤k≤(N+1)/2,输出A1,A3,…,A2k−1A_1, A_3, …, A_{2k - 1}A1​,A3​,…,A2k−1​的中位数.即前1,3,5,…1,3,5,…1,3,5,…个数的中位数. 输入输出格式 输入格式: 第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数Ai​(Ai​≤109). 输出格式: 共2(N+1)/2行,第iii行为A1…
题目描述 给出一个长度为NN的非负整数序列A_iAi​,对于所有1 ≤ k ≤ (N + 1) / 21≤k≤(N+1)/2,输出A_1, A_3, …, A_{2k - 1}A1​,A3​,…,A2k−1​的中位数.即前1,3,5,…1,3,5,…个数的中位数. 输入格式 第11行为一个正整数NN,表示了序列长度. 第22行包含NN个非负整数A_i (A_i ≤ 10^9)Ai​(Ai​≤109). 输出格式 共(N + 1) / 2(N+1)/2行,第ii行为A_1, A_3, …, A_{…
P1168 中位数 题目描述 给出一个长度为NN的非负整数序列$A_i$​,对于所有1 ≤ k ≤ (N + 1),输出$A_1, A_3, …, A_{2k - 1}A1​,A3​,…,A2k−1​$的中位数.即前1,3,5,…1,3,5,…个数的中位数. 用两个堆维护,大根堆维护较小的数里的最大值,小根对维护较大的数理的最小值,一次将每一个数插入,如果两个堆的大小差值大于1,即有一个堆中的元素并不符合实际要求, 要么大根堆里的元素维护多了一个值,要么小根堆里的元素维护多了一个值,那么这个多的…
P1168 中位数树状数组+二分答案.树状数组就是起一个高效查询比二分出来的数小的有几个. #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #include<ctime> #include<set> #include<map> #include<stack> #includ…
[题目描述:] 给出一个长度为N的非负整数序列A[i],对于所有1 ≤ k ≤ (N + 1) / 2,输出A[1], A[3], …, A[2k - 1]的中位数.即前1,3,5,……个数的中位数. [输入格式:] 输入文件median.in的第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数A[i] (A[i] ≤ 10^9). [输出格式:] 输出文件median.out包含(N + 1) / 2行,第i行为A[1], A[3], …, A[2i – 1]的中位数. 输入样例#…
题意:维护一个序列,两种操作 1.插入一个数 2.输出中位数(若长度为偶数,输出中间两个较小的那个) 对顶堆 维护一个小根堆,一个大根堆,大根堆存1--mid,小根堆存mid+1---n 这样堆顶必有中位数. 每次操作后维护两个堆元素数量,保证一个比另一个多1或相等 #include<cstdio> #include<iostream> #include<algorithm> #include<queue> using namespace std; #def…
题目描述 给出一个长度为N的非负整数序列Ai​,对于所有1≤k≤(N+1)/2,输出A1,A3,…,A2k−1的中位数.即前1,3,5,…个数的中位数. 输入格式 第1行为一个正整数N,表示了序列长度. 第2行包含N个非负整数Ai(Ai≤109). 输出格式 共(N+1)/2行,第i行为A1,A3,…,A2k−1​的中位数. 首先记录一个变量mid,记录答案(中位数).建立两个堆,一个大根堆一个小根堆,大根堆存≤mid的数,小根堆存 >mid的的数.所以我们向堆中加入元素时,就通过与mid的比较…
题目链接 https://www.luogu.org/problemnew/show/P1168 解题思路 这个题就是求中位数,但是暴力会tle,所以我们用一种O(nlogn)的算法来实现. 这里用到了两个堆,一个是大根堆,一个是小根堆,大根堆中的数总是小于小根堆中的数,且两个堆之间的数量最多差一. 见图(自己手画的,不太美观,请见谅): 就是这个样子,让两个堆的堆顶凑到一块比较容易理解. 就这样,每一次的答案就是元素个数较多的堆的堆顶. AC代码 #include<iostream> #in…
题目描述 给出一个长度为 $ N $ 的非负整数序列 $ A_i $ ,对于所有 $ 1 ≤ k ≤ (N + 1) / 2 $ ,输出 $ A_1, A_3, -, A_{2k - 1} $ 的中位数.即前 $ 1,3,5,- $ 个数的中位数. 输入输出格式 输入格式: 第 $ 1 $ 行为一个正整数 $ N $ ,表示了序列长度. 第 $ 2 $ 行包含 $ N $ 个非负整数 $ A_i (A_i ≤ 10^9) $ 输出格式: 共 $ (N + 1) / 2 $行,第 $ i $ 行为…