题意

传送门 POJ 3579

先处理掉绝对值。对数列升序排序,则绝对值可化为

Xi−Xj,j<iX_{i}-X_{j},j<iXi​−Xj​,j<i

根据等差数列求和公式,对于偶数、奇数情况,medianmedianmedian 都是第 N∗(N−1)/2/2+1N*(N-1)/2/2+1N∗(N−1)/2/2+1 小的数。此时二分搜索可能的 medianmedianmedian;对于每一个 XiX_{i}Xi​,其Xj,j<iX_{j},j<iXj​,j<i 代表的绝对值都是有序的,遍历 N−1N-1N−1 个数字,二分求满足 Xi−Xj>midX_{i}-X_{j}>midXi​−Xj​>mid 的个数即可。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#define min(a,b)    (((a) < (b)) ? (a) : (b))
#define max(a,b)    (((a) > (b)) ? (a) : (b))
#define abs(x)    ((x) < 0 ? -(x) : (x))
#define INF 0x3f3f3f3f
#define delta 0.85
#define eps 1e-5
#define PI 3.14159265358979323846
#define MAX_N 100005
using namespace std;
typedef long long LL;
int N;
LL K;
int X[MAX_N];bool C(int x){LL s = 0;for(int i = 1; i < N; i++) s += lower_bound(X, X + i, X[i] - x) - X;return s < K;
}int main(){while(~scanf("%d", &N)){for(int i = 0; i < N; i++) scanf("%d", X + i);K = (LL)N * (N - 1) / 4 + 1;sort(X, X + N);int lb = 0, ub = X[N - 1] - X[0];while(ub - lb > 1){int mid = (lb + ub) >> 1;if(C(mid)) ub = mid;else lb = mid;}printf("%d\n", ub);}return 0;
}

POJ 3579 二分相关推荐

  1. POJ 3579 二分答案

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

  2. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  3. Drying POJ - 3104 二分

    Drying    POJ - 3104  二分      http://poj.org/problem?id=3104 二分查找作用之一:查找结果,逆向求解. 最让HSQ学长头疼的就是洗衣服了.洗完 ...

  4. (POJ - 3579)Median(二分)

    中文题意:现在有N个神秘的数字(A1,A2,A3-.An),我们需要从这串数字中得到一个密码. 得到密码的方式为: 先计算每个数字之间的差:|Ai-Aj|(1<=i<j<=N),最后 ...

  5. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  6. POJ - 2456 二分解决

    使用二分和贪心方法解决 POJ -2456 #include <iostream> #include<algorithm> #include<cstdio> #in ...

  7. POJ 3228 二分最大流

    题意:       给你N个位置,每个位置都有金矿数量和仓库数量,然后位置和位置之间的距离给了出来,最后问你吧所有的金矿都放到库里面走的路径 最长的最短 是多少? 思路:      比较简单的一个题, ...

  8. poj 2397(二分+dp)

    题意:蜘蛛侠可以上下跳,问如何跳可以使得达到的最高高度尽可能小.并且最后的位置要在地面. 解题思路:首先记录跳的所有高度和sum,蜘蛛侠所能达到的最高高度肯定在1-sum之间(否则不可能做到),标准的 ...

  9. POJ 1505(二分+贪心)

    题意:给一些书,这些书有不同的页数,让把这些书分成k份,必须是连续的,问这些份中页数和的最大值最小是多少. 解题思路:知道了页数和的范围,而且书都是连续的,要找到页数和最大值的最小值可以直接二分答案. ...

最新文章

  1. pta两个有序链表的合并_21. 合并两个有序链表
  2. 电子秤专用模拟/数字(A/D)转换器芯片 HX711
  3. Python中使用ElementTree解析xml
  4. 科大星云诗社动态20201231
  5. AndroidL的checkPermission方法详解
  6. 【人工智能作业及答案】什么叫智能?什么叫人工智能?人工智能科学体系大致分哪几个层次?
  7. C++map容器-查找和统计
  8. Spring-@Value
  9. Istio最佳实践:在K8s上通过Istio服务网格进行灰度发布
  10. matlab简单分析数字滤波器FIR
  11. 在Vue项目中使用阿里巴巴矢量图
  12. python计算偶数平方和_如何使用Python和Numpy计算r平方?
  13. 3.2、关于Support for password authentication was removed on August 13, 2021报错的解决方案
  14. 【Unity3D】人物跟随鼠标位置
  15. 西电和杭电计算机考研,名师张雪峰:中国有四个电子科技大学,有一个很特别,考研要注意...
  16. WADISWAT数据处理
  17. 超市商品管理系统(课程设计)
  18. Origin制图之热力图(hot-map)
  19. BlueTooth: 蓝牙基带
  20. Remote Desktop User

热门文章

  1. 第二章 CortexM3/M4基础
  2. pip 更新matplotlib
  3. pandas dataframe选取某行或列做元素相乘
  4. ARM内核全解析,从ARM7,ARM9到Cortex-A7,A8,A9,A12,A15到Cortex-A53,A57【转】
  5. 关于安卓智能设备重力传感器检测重力加速度
  6. 数据挖掘与分析应用:tableau可视化数据分析,仪表盘,折线图,饼图,条形图,地图,散点图,区域图,表格,数据分析引用
  7. 三张解决方法--安装VMware报错:无法安装服务vmware Authorization server请确保你有足够的权限
  8. 达内java作业_【达内JAVA教程】达内Java基础题
  9. [转载]数学的重要性
  10. FEDAY2018游记