Median(二分+二分)

Median

 http://poj.org/problem?id=3579

Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 11225 Accepted: 4016

Description

Given N numbers, X1X2, ... , XN, let us calculate the difference of every pair of numbers: ∣Xi - Xj∣ (1 ≤ i  j  N). We can get C(N,2) differences through this work, and now your task is to find the median of the differences as quickly as you can!

Note in this problem, the median is defined as the (m/2)-th  smallest number if m,the amount of the differences, is even. For example, you have to find the third smallest one in the case of = 6.

Input

The input consists of several test cases.
In each test case, N will be given in the first line. Then N numbers are given, representing X1X2, ... , XN, ( X≤ 1,000,000,000  3 ≤ N ≤ 1,00,000 )

Output

For each test case, output the median in a separate line.

Sample Input

4
1 3 2 4
3
1 10 2

Sample Output

1
8

Source

POJ Founder Monthly Contest – 2008.04.13, Lei Tao

 

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<string>
 4 #include<map>
 5 #include<vector>
 6 #include<cmath>
 7 #include<string.h>
 8 #include<stdlib.h>
 9 #include<stack>
10 #include<queue>
11 #include<cstdio>
12 #define ll long long
13 const long long MOD=1000000007;
14 #define maxn 100005
15 using namespace std;
16 
17 int n;
18 int m;
19 int a[maxn];
20 
21 bool Check(int mid){
22     int sum=0;
23     int p;
24     for(int i=1;i<=n;i++){
25         p=upper_bound(a+1,a+n+1,a[i]+mid)-a;
26         sum+=p-i-1;//排除a[i]之前的那些元素,共有i+1;
27     }
28     if(sum>=m){
29         return true;
30     }
31     return false;
32 }
33 
34 int main(){
35     while(~scanf("%d",&n)){
36         m=n*(n-1)/2;
37         m=(m+1)/2;
38         for(int i=1;i<=n;i++){
39             scanf("%d",&a[i]);
40         }
41         sort(a+1,a+n+1);
42         ll L=0,R=1000000000,mid;
43         while(L<=R){
44             mid=L+R>>1;
45             if(Check(mid)){
46                 R=mid-1;
47             }
48             else{
49                 L=mid+1;
50             }
51         }
52         printf("%d\n",L);
53     }
54 
55 }
View Code

 

转载于:https://www.cnblogs.com/Fighting-sh/p/10054652.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Judy alpha 第七天

SCRUM 今天 debugger 部分由 Yu Xing 继续完成断点功能&#xff0c;由 Zhiqi Lin 开始实现查看变量功能。项目整体打包测试仍有困难&#xff0c;VS Code extension 的文档质量不佳&#xff0c;大家感到难以调试。成员昨日进展今日任务Zibo Wang协助打包、追踪开发进度协助打包、…

Phaser3让超级玛丽实现轻跳、高跳及加上对应的跳跃声音

mario jumper在线测试地址&#xff1a;http://www.ifiero.com/uploads/phaserjs3/jumper/ 空格键&#xff1a;轻按&#xff1a;跳低 &#xff0c;长按&#xff1a;跳高键盘&#xff1a;--> 向右 , <-- 向左 请确保已打开电脑的音乐开关 var config {type: Phaser.AUTO,w…

Mysql partition by

一&#xff0c;看原表 select * from user; 二&#xff0c;查询同组年级最大的 select username ,SUBSTRING_INDEX( GROUP_CONCAT(age order by age desc) ,,,1) uuid from ( select uuid ,username ,password ,age from user )b GROUP BY uuid asc; 转载于:https://www.cn…

Mysql导入大容量SQL文件数据问题

mysql在通过导入sql文件可能会出现下面二个问题:1.如果sql文件过大,会出现"MySQL server has gone away"问题;2.如果sql文件数据有中文,会出现乱码 解决问题:问题1:出现MySQL server has gone away"问题,是因为mysql默认的"max_allowed_packet"变量…

鼠标滑过抖动图标

在线演示 本地下载 转载于:https://www.cnblogs.com/qixidi/p/10079608.html

每日站立会议 12.06

每日站立会议 今天我们开始了对button按钮中素菜部分代码的编写&#xff0c;我负责编写时代码的复审。转载于:https://www.cnblogs.com/grrd17s/p/10079973.html

Spring的两种代理方式:JDK动态代理和CGLIB动态代理

代理模式 代理模式的英文叫做Proxy或Surrogate&#xff0c;中文都可译为”代理“&#xff0c;所谓代理&#xff0c;就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下&#xff0c;一个客户不想或者不能够直接引用一个对象&#xff0c;而代理对象可以在客…

拒绝推断问题(转)

拒绝推断&#xff08;Reject Inference&#xff09;是金融领域信用评分中的一个术语。对于要向银行借钱的人&#xff0c;我们需要考虑他们赖账的可能性。这样就需要根据他们的各种行为信息和人口统计学特征作为输入&#xff0c;来建立一个信用评分模型&#xff0c;这个建模过程…

python学习day26 封装 property 类方法 静态方法 反射

封装 广义上面向对象的封装 &#xff1a;代码的保护&#xff0c;面向对象的思想本身就是一种只让自己的对象能调用自己类中的方法 狭义上的封装 —— 面向对象的三大特性之一属性 和 方法都藏起来 不让你看见 私有属性 class Person:__key 123 # 私有静态属性def __init__(se…

针对科技文章的多标签分类

0. 起 最近没有更新。暑假之后学的东西也比较杂&#xff0c;看了一下基于DL的智能美颜&#xff0c;感觉入了个大坑。前前后后看了传统的轮廓提取算法和FCN等等&#xff0c;调代码巴拉巴拉几个星期就这么过了。前几天看ACM的best paper也觉得很有意思&#xff0c;两个步骤&#…

Rest_Framework之频率组件部分

一、RestFramework之频率组件源码部分 频率组件的源码部分和权限组件流程一模一样的&#xff0c;这里就不多说了&#xff0c;直接上源码的主要逻辑部分&#xff1a; def check_throttles(self, request):"""Check if request should be throttled.Raises an app…

【使用指南】WijmoJS 前端开发工具包

为方便广大前端开发人员更好的使用 WijmoJS 前端开发工具包&#xff0c;葡萄城专门推出了 WijmoJS 使用指南&#xff0c;该指南详细地介绍了如何把 WijmoJS 各种强大的功能应用到您自己的 Web 项目中&#xff0c;助您轻松掌握产品使用技巧&#xff0c;快速完成产品选型。 本指南…

phpMyAdmin4.4.10安装

1.下载地址&#xff1a; phpMyAdmin4.4.10 https://files.phpmyadmin.net/phpMyAdmin/4.4.10/phpMyAdmin-4.4.10-all-languages.zip Apache 2.4.12&#xff08;VC9&#xff09; http://www.apachehaus.com/cgi-bin/download.plx php-5.4.42&#xff08;VC9&#xff09…

汇编实验九

20171308171 胡欣怡 一、实验目的1. 掌握十进制两位数输出的方法2. 理解 8025 彩色字符模式显示原理3. 综合应用寻址方式和汇编指令完成应用编程二、实验准备1. 复习数值和数字字符之间的转换方法&#xff0c;div 指令用法2. 学习 P187-189 支撑材料及「实验 9 提示」&#xff…

U盘安装centos 7 提示 “Warning: /dev/root does not exist, could not boot” 解决办法

安装centos 7时提示 “Warning: /dev/root does not exist, could not boot” 这个问题是没有找到你的U盘&#xff0c;这个配置是需要在上一步需要完成的&#xff0c;但在上一步我们并不知道U盘的文件名&#xff0c;所以索性在这一步查看一下U盘的设备名&#xff0c;然后再回到…

【原创】大叔经验分享(6)Oozie如何查看提交到Yarn上的任务日志

通过oozie job id可以查看流程详细信息&#xff0c;命令如下&#xff1a; oozie job -info 0012077-180830142722522-oozie-hado-W 流程详细信息如下&#xff1a; Job ID : 0012077-180830142722522-oozie-hado-W -----------------------------------------------------------…

Beta 冲刺(3/7)

Beta 冲刺&#xff08;3/7&#xff09; Beta 冲刺 &#xff08;3/7&#xff09; 队名&#xff1a;第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬&#xff08;组长&#xff09; 过去两天完成了哪些任务 文字/口头描述 参与开发关键词提醒部分展示G…

vuex的理解

首先需要了解vuex的基本概念和使用方式&#xff0c;vue的官网也有很详细的说明或者浏览&#xff1a;https://zhuanlan.zhihu.com/p/24357762。vue是单页应用所以当页面刷新时vuex的数据随之也被清空了&#xff0c;如何实现页面被刷新而数据没有被清空呢&#xff1f;vuex主要是v…

Redis高可用sentinel

1.sentine介绍 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案&#xff0c;当用Redis做Master-slave的高可用方案时&#xff0c;假如master宕机了&#xff0c;Redis本身(包括它的很多客户端)都没有实现自动进行主备切换&#xff0c;而Redis-sentinel本身也是一个独立运行…

关于eclipse web项目认不到用户库的问题

解决方法&#xff1a; 选中项目右键属性&#xff0c;弹出对话框&#xff0c;选择Deployment Assembly&#xff0c;设置用户库对应路径。