超时算法,利用2的特殊性,用2个multiset来维护。单个multiset维护没法立即找到中位数。 其实也可以只用1个multiset,用一个中位指针,++,--来维护中位数。 #include<iostream> #include<stdio.h> #include<math.h> #inclu
分类:
其他好文 时间:
2016-03-08 08:07:39
阅读次数:
180
1 #include<cstdio> 2 #include<iostream> 3 #define M 100005 4 using namespace std; 5 int a[M],l[2*M],r[2*M],sum[M],n,m,p,ans; 6 int main() 7 { 8 scanf(
分类:
其他好文 时间:
2016-03-06 23:35:37
阅读次数:
185
首先,对于每个询问,我们二分答案 然后对于序列中大于等于中位数的数,我们把它们置为1,小于中位数的数,置为-1 那么如果一个区间和大于等于0,那么就资磁,否则就不滋磁 这个区间和呢,我们可以用主席树维护前缀和 [c,d]上的最大前缀和减去[a-1,b-1]上的最小前缀和,就是所有可用区间的最大区间和
分类:
其他好文 时间:
2016-02-24 22:29:09
阅读次数:
294
题意 给出n个数的集合,求一个 (平均数-中位数)最大 (偏度最大)的子集,输出子集元素个数和各个元素(任意顺序)。 分析 因为是子集,所以不一定是连续的序列。然后我们有下面几个结论。 1.最大偏度一定≥0 因为一个元素时,偏度为0。 2.最大偏度子集必定有元素个数为奇数个的。 证: 如果当元素个数
分类:
其他好文 时间:
2016-02-24 13:53:24
阅读次数:
243
题目链接 给n个数, 让你去掉一些数, 使得剩下的数的平均值-中位数的差值最大。 先将数组排序, 然后枚举每一个数作为中位数的情况, 对于每个枚举的数, 三分它的左右区间长度找到一个平均值最大的情况, 平均值最大, 肯定是它左边的数是靠近他的那几个数, 右边的数是最右边的那几个数。 然后所有情况取最
分类:
其他好文 时间:
2016-02-22 10:12:24
阅读次数:
253
题目链接:点击打开链接
题意:给你n个数, 要求选若干个数, 使得这些数的平均数减去中位数尽量大。
思路:由于该题没有顺序问题, 排好序之后我们可以枚举中位数, 可以证明, 奇数个数一定比偶数优,然后三分中位数左右区间长度x(数的个数), 在中位数的右边选最大的x个数, 在左边也选最大的x个, 这样, 随着区间长度的增加, 平均数将先增大后减小, 或者一直减小,或者一直增大。
为什么呢? 假...
分类:
其他好文 时间:
2016-02-18 12:04:43
阅读次数:
178
我实在是太弱了。。。不滚粗只能刷BZOJ了。。。这里来记录每天刷了什么题吧。 2015-8-13: 正式开始! 1030[JSOI2007]文本生成器 | ac自动机+DP 1042 [HAOI2008]硬币购物 | 容斥原理+背包 1045 [HAOI2008] 糖果传递 | 数学+中位数 104
分类:
其他好文 时间:
2016-02-16 20:31:33
阅读次数:
203
所谓[l,r]的中位数?就是区间第(r-l+2)大。 主席树乱搞之。 #include<iostream>#include<cstdio>#include<algorithm>#include<vector>#define maxn 1005using namespace std;int num[m
分类:
其他好文 时间:
2016-02-06 18:21:17
阅读次数:
149
第i个顺序统计量:该集合中第i小的元素(建集合排序后第i位 当然算法可以不排序) 中位数:集合中的中点元素 下中位数 上中位数 9.1最大值和最小值 单独的max或min每个都要扫一遍 n-1次比较 如果同时找max和min 要 :1.2个数相互比较 1次{每次选出2个 选n//2次} 2.大的和m...
分类:
编程语言 时间:
2016-02-06 14:21:06
阅读次数:
288
https://leetcode.com/problems/median-of-two-sorted-arrays/一个常见的思路就是利用递归查找第K个数来实现。 1 private int FindKth(int[] a, int sa, int[] b, int sb, int ...
分类:
编程语言 时间:
2016-01-25 06:37:08
阅读次数:
308