POJ 3579 Median 二分 思維

2022-03-16 21:24:33 字數 760 閱讀 3077

給你一些數,然後求這些數相互之間差的絕對值,然後絕對值排序,找到中間那個數。

我反正一直開始是沒有想到這個題竟然可以用二分來做。━━( ̄ー ̄*|||━━.

二分列舉答案,假設列舉值為mid,然後就是在排好序的序列中對每乙個num[i]找到在i之後,有多少個大於num[i]+mid的數的個數(數列裡的值比num[i]+mid大,說明該值與num[i]作差形成的新數列裡的數比中位數mid大),用lower_bound計算所有差值比mid大於等於的組合個數。如果個數之和小於新數列個數的一半,則說明mid大了。

#include#include#include#include#include#include#include#include#includetypedef long long ll;

using namespace std;

const double esp=1e-6;

const int inf=0x3f3f3f3f;

const int maxn=1e5+7;

ll num[maxn], n, m;

ll solve(ll value)

printf("%d\n", lt-1);

} return 0;

}

二分查詢 POJ3579 Median

給定乙個長度為n的正整數序列a,現有a中的所有元素任意兩兩做差,形成乙個長度為cn2 c n 2 cn2 的序列b,求出b的中位數。其中,1 n 1e5,0直接求出這些差值 排列 選中位數,顯然會超時,其時間複雜度為o n 2 log n 2 其中求值為o n 2 排列為o m log m 二分查詢...

POJ 3579 Median 尺取 二分

給n數字,x1,x2,xn,我們計算每對數字之間的差值 xi xj 1 i j n 我們能得到 c n,2 個差值,現在我們想得到這些差值之間的中位數。如果一共有m個差值且m是偶數,那麼我們規定中位數是第 m 2 小的差值。input輸入包含多測 每個測試點中,第一行有乙個nthen n 表示數字的...

Poj3579Median二分查詢第K大

題目鏈結 題目 給定一組數x ix i xi 我們可以得到c n 2 c n,2 c n,2 個差值 xi xj i x i x j i j xi x j i,問求這些差值組成的數列中第k kk個 k c n,2 2 k c n,2 2 k c n 2 2 是多少。思路比較常見的二分題目。首先對輸入...