中文题意:现在有N个神秘的数字(A1,A2,A3….An),我们需要从这串数字中得到一个密码。
得到密码的方式为:
先计算每个数字之间的差:|Ai-Aj|(1<=i<j<=N),最后能得到C个差值。
最终的密码为这些数的中位数。
如果C是偶数,就规定中位数是第 C/2 小的差值。

这道题和POJ-3579题做法差不多,我们也是通过二分答案来进行求解,对于每个待二分的数x,我们通过check函数来判断小于等于x的距离的数对有多少个,如果距离小于等于x的数对数目大于总数对数目的一半,那么r=x,反之l=x+1,具体二分应该怎么进行呢?我们先对a数组进行从小到大排序,二分求出在ai右边且距离小于等于x的数的个数,由于aj-ai具有单调递增性,所以这个过程是通过二分进行的,依次遍历ai,求距离小于x的数对数目,进行二分即可,细节比较多,详情见代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<vector>
#include<algorithm>
#include<map>
#include<cmath>
#include<queue>
using namespace std;
const int N=1000003;
int a[N],n;
bool check(int x)//求出距离小于等于x的数对有多少,大于所有数对数目的一半返回true,否则返回false
{int cnt=0;for(int i=1;i<=n;i++)cnt+=upper_bound(a+1,a+n+1,a[i]+x)-a-i-1;if(cnt>=((long long)n*(n-1)/2+1)/2) return true;return false;
}
int main()
{while(scanf("%d",&n)!=EOF){for(int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+n+1);int l=0,r=1000000000,mid;while(l<r){mid=l+r>>1;if(check(mid)) r=mid;else l=mid+1;}printf("%d\n",l);}return 0;
}

(POJ - 3579)Median(二分)相关推荐

  1. POJ 3579 Median

    题目链接 Description Given N numbers, X1, X2, - , XN, let us calculate the difference of every pair of n ...

  2. poj 3579 Median 中间值(二分搜索)

    Given N numbers, X1, X2, ... , XN, let us calculate the difference of every pair of numbers: ∣Xi - X ...

  3. POJ 3579 二分

    题意 传送门 POJ 3579 先处理掉绝对值.对数列升序排序,则绝对值可化为 Xi−Xj,j<iX_{i}-X_{j},j<iXi​−Xj​,j<i 根据等差数列求和公式,对于偶数 ...

  4. POJ 3579 二分答案

    POJ 3579 二分答案 文章目录 POJ 3579 二分答案 题目 思路 代码 题目 思路 排序,二分一下答案,然后对于每一个元素看一看加上这个答案tmp之后,在数列里面排在哪里,比a[i]+tm ...

  5. A - Expanding Rods POJ - 1905(二分)

    A - Expanding Rods POJ - 1905(二分) 题目 Problem Description When a thin rod of length L is heated n deg ...

  6. poj 2049(二分+spfa判负环)

    poj 2049(二分+spfa判负环) 给你一堆字符串,若字符串x的后两个字符和y的前两个字符相连,那么x可向y连边.问字符串环的平均最小值是多少.1 ≤ n ≤ 100000,有多组数据. 首先根 ...

  7. Median(二分+二分)

    Median http://poj.org/problem?id=3579 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1 ...

  8. POJ:3579-Median(二分+尺取寻找中位数)

    Median Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9201 Accepted: 3209 Description Gi ...

  9. POJ 3104 Drying 二分

    http://poj.org/problem?id=3104 题目大意: 有n件衣服,每件有ai的水,自然风干每分钟少1,而烘干每分钟少k.求全部弄干的最短时间. 思路: 注意烘干时候没有自然风干. ...

最新文章

  1. Matlab与线性代数--矩阵的奇异值和奇异值分解
  2. 去重和分类后缀asp、php等路径 用python3写的
  3. NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理
  4. python缩进编码教程_python基础语法教程:行与缩进
  5. 2、运行.py文件、字符串、保留字符、行和缩进、多行语句、引号、注释、等待用户输入、同一行显示多条语句、命令行参数
  6. WEB安全基础-SQL注入演示
  7. 第一章 QT Creator 简介
  8. USACO 3.4 Closed Fences (计算几何)
  9. 程序员最深情的告白——《致对象》
  10. 恒生PB与讯投PB区别
  11. 计算机系统的软件有,计算机系统软件有哪些
  12. [UE4][C++]简单超人小游戏(游戏接受键盘事件)
  13. s+清辅音,读作对应的浊辅音
  14. Python学习笔记——数据分析之工作环境准备及数据分析建模理论基础
  15. C语言中 srand()函数和rand()函数
  16. Shell语法----概论
  17. JAVA图形化打字小游戏
  18. ShapeFile预览神器QuickLook
  19. 《SQL Server2008R2数据挖掘与商业智能》实例——决策树
  20. ippicv_2020_lnx_intel64_20191018_general.tgz 无法下载

热门文章

  1. PDF,Word文件转换工具
  2. java中没有直接调用matlab的接口函数
  3. python查找文字在图片中的位置_图片转文字、二维码互转链接、查找不懂写的字...
  4. 新疆大学计算机对口支援高校,国内10所高校签订对口支援新疆大学协议
  5. 自媒体软件哪个好?盘点那些好用的自媒体软件
  6. 云计算机比本地机更可靠吗,云电脑的配置有几种选择?云电脑配置和本机有关系吗?...
  7. 永磁同步电机矢量控制基础补充(六)——如何在simulink初始化电机参数?
  8. sap crm行业解决方案_2019年,CRM客户关系管理软件排名比较
  9. 自定义公众号页面右上角分享
  10. 实验室lims数据统计分析主要解决哪些问题?