poj 3579 二分
来源:互联网 发布:雅俗共赏歌词知乎分析 编辑:程序博客网 时间:2024/05/15 06:26
题意:给定n个数,可知如果求每两个数之差的绝对值,那么会得到C(n,2)个值(可能有重复)。现在要求这C(n,2)个值的中位数(如果是偶数个,那么求下中位数)。
思路:二分。首先排序,然后二分答案,对于枚举的答案值,二分求出差的绝对值大于这个答案值的个数。如果个数过多了,那么说明枚举的答案太小了,应该加大,否则应该减小。时间复杂度,O(n*logn*INTMAX)
#include <cstdio>#include <algorithm>using namespace std;int n,s[100005];bool test(int x,int b){ int sum = 0; for(int i = 0;i<n;i++) sum += n-(lower_bound(s, s+n, s[i]+x)-s); if(sum > b) return true; return false;}int main(){ while (scanf("%d",&n)!=EOF) { for(int i = 0;i<n;i++) scanf("%d\n",&s[i]); sort(s, s+n); int low = 0,high = s[n-1]-s[0]; int b = n*(n-1)/4; while(low <= high){ int mid = (low+high)>>1; if(test(mid,b)) low = mid+1; else high = mid-1; } printf("%d\n",high); } return 0;}
0 0
- Median - POJ 3579 二分
- POJ - 3579 Median 二分
- poj 3579(二分)
- poj 3579 二分+lower_bound
- poj 3579 二分
- poj 3579 二分
- POJ 3579(二分)
- POJ 3579 Median(二分)
- POJ 3579 - Median(二分搜索)
- [POJ 3579] Median (二分答案+二分查找)
- POJ 3579 Median 查找中间值 二分
- poj 3579 Median 二分查找与lower_bound
- POJ 3579 Median (二分搜索)
- POj 3579 Median(二分逼近)
- POJ 3579 Median(2次二分)
- poj 3579 二分加尺取法
- 二分——POJ 3579 Median
- poj (3343)二分匹配+二分
- 学习android笔记(5) 动态建立TableLayout 表格布局
- Linq的延迟加载
- Picasso入门教程(十一)Influencing Image Cache(影响图片缓存)
- 我的读书方法
- 数组剔除元素后的乘积
- poj 3579 二分
- pip安装失败
- Lightoj 1007
- NAS 厂商的简单总结
- GPS定位基本原理浅析
- 接口与类的相似及区别
- [GitHub]第二讲:GitHub客户端
- 数据结构——二分法查找
- Celery用户指引------监控与管理