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

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

Description

Given?N?numbers,?X1,?X2, ... ,?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?m?= 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?X1,?X2, ... ,?XN, (?Xi?≤ 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
題意:給你N個數字,求這些數字兩兩之差的絕對值的中位數
二分套二分:核心還是要抓住<x的數量>=m(內層二分)最小x(外層二分)-1才是該序列中的第m小的數,有不理解的話可以看本博客另一篇講的很詳細的文章
下面的第一份代碼是使用了lower_bound,復雜度是n(logn)*(logn);時間是563ms#include<cstdio>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;
#define MM(a) memset(a,0,sizeof(a))
typedef long long LL;
typedef unsigned long long ULL;
const int mod = 1000000007;
const double eps = 1e-10;
const int inf = 0x3f3f3f3f;
int  a[100005];
long long   l,r,m,n;
int ok(int  x)
{int  cnt=0;for(int i=1;i<=n;i++)cnt+=lower_bound(a+i,a+n+1,a[i]+x)-(a+i)-1;
//lower_bound降低時間復雜度return cnt>=m; } int main() {while(~scanf("%lld",&n)){for(int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+n+1);m=n*(n-1)/2;if(m%2==0) m=m/2;else m=(m+1)/2;l=0,r=a[n]-a[1];while(r-l>1){int mid=(r+l)>>1;///枚舉得到<x的數量>=m的最小x;if(ok(mid))r=mid;elsel=mid;}printf("%lld\n",r-1);}return 0; }

  有個小技巧是在ok()函數內統計絕對值<x的數量可以不適用lower_bound而使用尺取法

可以降低復雜度,復雜度是(logn)*n,時間只有300多ms

int ok(int  x)
{int  cnt=0;for(int i=1,j=1;i<=n;i++){while(a[j]-a[i]<x&&j<=n)j++;cnt+=(j-1-i);}return cnt>=m;
}

  

轉載于:https://www.cnblogs.com/smilesundream/p/5123626.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373815.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373815.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373815.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

qt 嵌入web頁面_Qt嵌入瀏覽器(三)——QWebEngine與Https

本篇簡介&#xff1a;本篇的小目標&#xff1a;挑戰通過Qt WebEngine實現與服務端的Https雙向認證雙向認證&#xff0c;Qt WebEngine和Chromium這里先說結論&#xff1a;挑戰失敗了。至少使用Qt WebEngine目前已實現的組件沒有辦法直接實現雙向認證。先來簡要分析一下實現雙向認…

python模塊;opencv安裝

http://www.lfd.uci.edu/~gohlke/pythonlibs/ 1. 步驟1. 下載Python2.73, 安裝, 并配置Python環境變量:".\Program Files\Python27;";注意: OpenCV僅支持2.6&2.7, Python不能使用3.x版本;2. 下載OpenCV2.46, 安裝, 并配置OpenCV環境變量:".\Program Files\o…

Java中的正則表達式–軟介紹

正則表達式是一種可以應用于文本&#xff08;Java中的String&#xff09;的模式。 Java提供了java.util.regex包&#xff0c;用于與正則表達式進行模式匹配。 Java正則表達式與Perl編程語言非常相似&#xff0c;并且非常易于學習。 正則表達式匹配文本&#xff08;或文本的一部…

AJAX入門——工作原理

理解同步交互和異步交互 舉個例子&#xff1a;普通B/S模式(同步) AJAX技術(異步) * 同步&#xff1a; 提交請求->等待服務器處理->處理完畢返回 這個期間客戶端瀏覽器不能干任何事。 發送方發出數據后&#xff0c;等接收方發回響應以后才發下一個數據包的…

Couldn’t communicate with a helper application.

出現此問題 的情景 我在提交svn之前&#xff0c;在Xcode中的Images.xcassets里添加了文件夾后又刪除了&#xff0c; 但是 在Xcode中提交的時候&#xff0c;左側勾選文件那一欄中 出現了此文件夾及里邊的文件。 解決&#xff1a; 我在conerstore中將此文件夾 remove后&#xff0…

python 復制文件夾內容 并結構一致_Python比較文件夾比另一同名文件夾多出的文件并復制出來的方法...

本文實例講述了Python比較文件夾比另一同名文件夾多出的文件并復制出來的方法。分享給大家供大家參考。具體如下&#xff1a;這個東東本來是做來給公司數據同步用的&#xff1a;新服務器還沒正式啟用&#xff0c;舊的服務器還在使用&#xff0c;每天都有大量圖片傳到舊服務器上…

css控制頁面文字不能被選中user-select:none;

現象&#xff1a;html中可能有些地方不想讓用戶復制文字&#xff0c;或是用a標簽做了個點擊按鈕&#xff0c;點快的時候文字會被選中&#xff0c;很丑&#xff0c;這個時候可以使用下面的方案禁止文字選中。原因&#xff1a;鼠標點快了文字會被選中。解決方案&#xff1a;不同的…

form表單標簽的enctype屬性的作用

Enctype是指定將數據回發到服務器時瀏覽器使用的編碼類型&#xff0c;其編碼類型有以下三種 一、 application/x-www-form-urlencoded 這是通過表單發送數據時默認的編碼類型。我們沒有在from標簽中設置enctype屬性時默認就是application/x-www-form-urlencoded類型的。…

重溫“ Java Sucks”

總覽 關于Java的不足之處&#xff08;從C開發人員的角度來看&#xff09;的一個有趣的文檔是在一段時間&#xff08;大約2000年前&#xff09;寫的&#xff0c;但是今天許多論點都像十年前一樣真實&#xff08;或不真實&#xff09;。 原始的Java Sucks發布。 短消息回顧 Ja…

Android Studio IDE Out of Memory

場景&#xff1a; 嘗試過各種方式&#xff0c;IDE重裝&#xff0c;重新啟動&#xff0c;設置IDE MEMORY大小JDK MEMORY大小都無效 終于在FILE->INVALIDATE CACHES/RESTART 中點擊重新啟動之后問題攻克了。轉載于:https://www.cnblogs.com/yxwkf/p/5128094.html

git 忽略 部分文件夾_git設置忽略文件和目錄

1.登錄gitbash命令端進入本地git庫目錄AdministratorPC201601200946 MINGW32 /d/gitrespository/crmweb (master)2.創建.gitignore3.修改文件&#xff0c;添加忽略正則.idea //忽略.idea文件夾及文件夾下文件*.iml //忽略以.iml結尾的文件【例子】# 忽略*.o和*.a文件*.[oa]# 忽…

在Spring MVC REST應用程序中自動生成WADL

上一次我們學習了WADL的基礎知識 。 語言本身并沒有那么有趣&#xff0c;只寫了一篇有關它的文章&#xff0c;但是本文的標題揭示了為什么我們需要這些知識。 JSR 311的許多實現&#xff1a;JAX-RS&#xff1a;RESTful Web服務的Java API提供了開箱即用的運行時WADL生成&#x…

JSP靜態導入與動態導入

JSP靜態導入&#xff08;JSP指令標記include&#xff09; JSP頁面第一次被請求時&#xff0c;會被JSP引擎轉譯成Servlet的Java文件&#xff0c;然后再被編譯成字節碼文件執行。JSP指令標記為JSP頁面轉譯提供整個頁面的相關信息。 include指令用于在JSP頁面靜態插入一個文件&…

關于DJANGO和JAVASCRIPT的時間

最近&#xff0c;實際一些簡單統計時&#xff0c;要到庫里去檢索數據出來用HIGHCHARTS畫圖&#xff0c; 作一個簡單的回照。。 DJANGO用TEMPLATEVIEW來作。專業&#xff0c;正規&#xff1a;&#xff09; class SAView(TemplateView):template_name version/sa_site.htmlpagin…

git里面的文件怎么刪不掉_.git目錄刪不掉

這樣的情況并非是第一次遇到了&#xff0c;以前總是會覺得這樣的問題只是電腦的錯亂&#xff0c;重啟一下電腦就好了&#xff0c;但是并非每次都需要重啟電腦的&#xff0c;其實簡單的設置一下&#xff0c;這個問題就可以解決了。對了&#xff0c;咱們還是說說這到底是個什么問…

集成框架比較– Spring集成,Mule ESB或Apache Camel

公司之間的數據交換增加了很多。 必須集成的應用程序數量也增加了。 這些接口使用不同的技術&#xff0c;協議和數據格式。 但是&#xff0c;這些應用程序的集成應以標準化的方式建模&#xff0c;有效實現并由自動測試支持 。 JVM環境中提供了三個可滿足這些要求的集成框架&…

Vue.js組件學習

組件可以擴展HTML元素&#xff0c;封裝可重用的HTML代碼&#xff0c;我們可以將組件看作自定義的HTML元素。組件系統提供了一種抽象&#xff0c;讓我們可以使用獨立可復用的小組件來構建大型應用。 一個簡單組件例子(全局注冊&#xff09; <!DOCTYPE html> <html>&…

Winform MD5

1&#xff1a;MD5 http://www.cmd5.com/ 字節數組----字符串 //將字節數組中每個元素按照指定的編碼格式解析成字符串//直接將數組ToString()//將字節數組中的每個元素ToString() //ToString("Params") ToString("x") //可以將十進制字符串轉換為16進制字符…

HTML元素顯示與隱藏

在WEB開發中&#xff0c;前臺HTML中經常需要控制元素的隱藏與顯示&#xff0c;我們最為最常見是二級導航欄&#xff08;通過鼠標的移動來觸發onmouseover&#xff0c;onmouseout事件來實現二級菜單的顯示與隱藏&#xff09;二級菜單的顯示與隱藏。 然而控制元素的影響與顯示有…

書評:JavaFX 2.0:示例介紹

盡管Oracle在JavaOne 2010和JavaOne 2011上對JavaFX的更改使我從懷疑論者轉變為對JavaFX的信奉者 &#xff0c;但是JavaFX愿景的轉變并非沒有缺點 。 特別是&#xff0c;JavaFX圖書市場一直很棘手&#xff0c;因為幾乎所有可用的JavaFX圖書都與1.x版本有關。 在這篇文章中&…