cdoj1087 基爺的中位數 二分

2021-07-27 23:11:48 字數 927 閱讀 7889

二分列舉中位數,然後:mid為當前的中位數,找到比a[i]大mid的數(>=a[i]+mid)的個數,判斷cnt是不是有總數的一半

#include 

using namespace std;

typedef long

long ll;

#define ms(a) memset(a,0,sizeof(a))

#define mp make_pair

#define pb push_back

const

int inf = 0x3f3f3f3f;

const ll infll = 0x3f3f3f3f3f3f3f3fll;

inline ll read()

while(ch>='0'&&ch<='9')

return x*f;

}///

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

//////

/////

const

int maxn = 1e5+10;

ll a[maxn];

int main()

if(cnt <= tmp/2) // 並不知道為什麼等於,對於第乙個樣例,m個數是1 1 1 2 2 3 按照題目的要求,中位數是1

// 我猜 是當m是偶數的時候,中位數mid可能重複,所以要再往下找乙個

r = mid-1;

else

ans = mid, l = mid+1;

}cout << ans << endl;

}return

0;}

求二叉搜尋樹的中位數

題目 求二叉搜尋樹的中位數。二叉搜尋樹結點定義 struct bstnode 解法一 中序遍歷 二叉搜尋樹的中序遍歷結果是有序的,利用這一特點很容易找到中位數。int treedata 100 void inorderbst bstnode proot,int count int medianinb...

兩個有序序列的中位數(二分搜尋)

問題 已知有兩個等長的非降序序列 s1,s2,設計函式求s1與 s2並集的中位數。有序序列a 0 a 1 a n 1 的中位數指a n 1 2 的值,即第 n 1 2 個數 a 0 為第 1個數 演算法描述 輸入兩個長度自定且等長的陣列,然後對他們進行賦值。演算法的思路是分別取他們的中位數進行比較,...

二分 尋找兩個正序陣列的中位數

力扣 尋找兩個正序陣列的中位數 hard 如下圖所示,中位數必然滿足這樣的分割線,將兩個陣列分別分為兩個部分,最終組成四個部分,分別為t1 left,t1 right,t2 left,t2 right,其中t1代表第乙個陣列,t2代表第二個陣列,left 代表分割線左邊的部分,right 代表分割線...