【题目链接】 http://poj.org/problem?id=3579

【题目大意】

  给出一个数列,求两两差值绝对值的中位数。

【题解】

  因为如果直接计算中位数的话,数量过于庞大,难以有效计算,
  所以考虑二分答案,对于假定的数据,判断是否能成为中位数  
  此外还要使得答案尽可能小,因为最小的满足是中位数的答案,才会是原差值数列中出现过的数
  对于判定是不是差值的中位数的过程,我们用尺取法实现。
  对于差值类的题目,还应注意考虑边界,即数列只有一位数的情况。

【代码】

#include <cstdio>
#include <algorithm>
using namespace std;
int n,a[100010];
int main(){
while(~scanf("%d",&n)){
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+n+1);
int l=0,r=a[n],m=n*(n-1)/4+((n*(n-1)/2)&1),ans=0;
if(n==1){puts("0");continue;}
int Ans=0;
while(l<=r){
int mid=(l+r)>>1,pre=1,ans=0;
for(int i=2;i<=n;i++){
while(a[i]-a[pre]>mid)pre++;
ans+=i-pre;
}if(ans>=m)r=mid-1,Ans=mid;
else l=mid+1;
}printf("%d\n",Ans);
}return 0;
}

POJ 3579 Median(二分答案+Two pointers)的更多相关文章

  1. POJ 3579 Median 二分加判断

    Median Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12453   Accepted: 4357 Descripti ...

  2. POJ 3579 Median (二分)

                                                                                                         ...

  3. poj 3579 Median 二分套二分 或 二分加尺取

    Median Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5118   Accepted: 1641 Descriptio ...

  4. POJ 3579 Median 【二分答案】

    <题目链接> 题目大意: 给出 N个数,对于存有每两个数的差值的序列求中位数,如果这个序列长度为偶数个元素,就取中间偏小的作为中位数. 解题分析: 由于本题n达到了1e5,所以将这些数之间 ...

  5. POJ 3104 Drying(二分答案)

    题目链接:http://poj.org/problem?id=3104                                                                  ...

  6. POJ 3122 Pie 二分答案

    题意:给你n个派,每个派都是高为一的圆柱体,把它等分成f份,每份的最大体积是多少. 思路: 明显的二分答案题-- 注意π的取值- 3.14159265359 这样才能AC,,, //By Sirius ...

  7. POJ 3579 Median(二分答案)

    Median Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11599 Accepted: 4112 Description G ...

  8. poj 3579 Median (二分搜索之查找第k大的值)

    Description Given N numbers, X1, X2, ... , XN, let us calculate the difference of every pair of numb ...

  9. POJ 3579 median 二分搜索,中位数 难度:3

    Median Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3866   Accepted: 1130 Descriptio ...

随机推荐

  1. 诺基亚 Lumia 1020的价格

       大部分的中国人心中,都有一个诺基亚情节.经典的1110,耐摔程度强得惊人,相信很多人都知道它的厉害.    虽说这些年诺基亚由于没有跟上Android这一波智能机的浪潮,在智能机时代被三星苹果等 ...

  2. Oracle EBS-SQL (PO-14):检查供应商信息sql

    select pvs.org_id, pvs.vendor_id, pvs.vendor_site_id, hou.name                                 经营组织, ...

  3. MFC 遍历FTP服务器目录相关

    CInternetSession* pSession; pSession = new CInternetSession;  //构造新的连接 CFtpConnection* pFtpCon; pFtp ...

  4. yum lamp for Centos6.4

    1,Centos6.4  yum lamp#!/bin/sh<<cat#echo Ruiy!#Create by Ruiy on 2015-03-27----cat yum install ...

  5. hdu 1181 变形课(dfs)

    Problem Description 呃......变形课上Harry碰到了一点小麻烦,因为他并不像Hermione那样能够记住所有的咒语而随意的将一个棒球变成刺猬什么的,但是他发现了变形咒语的一个 ...

  6. ROW_NUMBER() OVER函数的基本用法用法【转】

    语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) 简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW ...

  7. Spring Http Invoker

    配置例如以下: ①web.xml配置 <servlet> <servlet-name>remote</servlet-name> <servlet-class ...

  8. 0ctf-pwn_warmup-re_mips4

    Warmup(2) 程序很小,读写操作直接通过int 80h系统调用完成.栈溢出漏洞很明显,能溢出20字节.提示由于沙盒的保护只能来读取/home/warmup/flag文件.那么思路就很清楚了,打开 ...

  9. mesos博客集

    http://dongxicheng.org/category/apache-mesos/

  10. 教你如何理解SQL

    1. SQL 是一种声明式语言 首先要把这个概念记在脑中:“声明”. SQL 语言是为计算机声明了一个你想从原始数据中获得什么样的结果的一个范例,而不是告诉计算机如何能够得到结果.这是不是很棒? (译 ...