UESTC_基爷的中位数 2015 UESTC Training for Search Algorithm & String<Problem D>
2015-05-12 13:22
639 查看
D - 基爷的中位数
Time Limit: 5000/3000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)Submit Status
给你N个数,X1,X2,...,XN, 基爷让我们计算任意两个数差的绝对值 ∣Xi−Xj∣ (1≤i<j≤N) 。 这样,我们可以得到 C2N 个数。
现在,基爷希望聪明的你能用一个简单的程序求出这 C2N 个数的中位数!
Input
输入有多组数据。每组数据,第一行一个整数 N,第二行给出 N 个整数 X1,X2,...,XN ( |Xi|≤1,000,000,000; 3≤N≤100,000 )
Output
按要求输出中位数,每个数占一行。Sample input and output
Sample Input | Sample Output |
---|---|
4 1 3 2 4 3 1 10 2 | 1 8 |
Hint
当这 C2N 个数的个数为偶数 M 的时候,取第 ⌊M2⌋ 个最小的数作为中位数 ( 别问为什么,这就是基爷的中位数! )
解题报告:
排序之后二分答案,每次找位置也是二分,总复杂度 olognlogx,每次找严格小于这个数的数有多少个!!
总之。。注意细节(我挂了35发)
#include <iostream> #include <algorithm> typedef long long ll; using namespace std; const int maxn = 1e5 + 50; ll x[maxn]; ll n; int main(int argc,char *argv[]) { while(~scanf("%lld",&n)) { for(int i = 0 ; i < n ; ++ i) scanf("%lld",&x[i]); sort(x,x+n); ll r = 5e9 , l= -5e9; ll tar = n*(n-1)/2; if (tar & 1) tar /= 2; else tar = tar / 2 - 1; //小于等于目标位置的有多少个数 while(r > l) { ll mid = l + (r-l + 1) / 2; ll rank = 0; for(int i = 0 ; i < n - 1 ; ++ i) rank += (lower_bound(x+i+1,x+n,mid+x[i])-(x+i+1)); // 小于该数的有几个 if (rank > tar) r = mid - 1; else l = mid; } printf("%lld\n",r); } return 0; }
相关文章推荐
- UESTC_基爷与加法等式 2015 UESTC Training for Search Algorithm & String<Problem C>
- UESTC_Palindromic String 2015 UESTC Training for Search Algorithm & String<Problem M>
- UESTC_韩爷的梦 2015 UESTC Training for Search Algorithm & String<Problem N>
- UESTC_吴队长征婚 2015 UESTC Training for Search Algorithm & String<Problem E>
- UESTC_Eight Puzzle 2015 UESTC Training for Search Algorithm & String<Problem F>
- UESTC_Infected Land 2015 UESTC Training for Search Algorithm & String<Problem G>
- UESTC_全都是秋实大哥 2015 UESTC Training for Search Algorithm & String<Problem J>
- UESTC_王之迷宫 2015 UESTC Training for Search Algorithm & String<Problem A>
- UESTC_秋实大哥の恋爱物语 2015 UESTC Training for Search Algorithm & String<Problem K>
- UESTC_Ferris Wheel String 2015 UESTC Training for Search Algorithm & String<Problem L>
- UESTC_邱老师降临小行星 2015 UESTC Training for Search Algorithm & String<Problem B>
- 2015 UESTC Training for Search Algorithm & String - J - 全都是秋实大哥 【KMP】
- 2015 UESTC Training for Search Algorithm & String - M - Palindromic String【Manacher回文串】
- 2016 UESTC Training for Search Algorithm & String H - 中二少女与字符串 Trie 字典树
- UESTC_Big Brother 2015 UESTC Training for Graph Theory<Problem G>
- UESTC_秋实大哥去打工 2015 UESTC Training for Data Structures<Problem G>
- UESTC_导弹拦截 2015 UESTC Training for Dynamic Programming<Problem N>
- 2016 UESTC Training for Search Algorithm & String I - 谭爷剪花布条 KMP
- UESTC_韩爷的情书 2015 UESTC Training for Graph Theory<Problem H>
- UESTC_秋实大哥打游戏 2015 UESTC Training for Data Structures<Problem H>