acwing 二分模板

2021-10-05 14:06:02 字數 499 閱讀 5967

二分模板一共有兩個,分別適用於不同情況。

演算法思路:假設目標值在閉區間[l, r]中, 每次將區間長度縮小一半,當l = r時,我們就找到了目標值。

當我們將區間 [l, r] 劃分成 [l, mid] 和 [mid + 1, r] 時,其更新操作是 r = mid 或者 l = mid + 1,計算 mid 時不需要加 1 。

int

bsearch_1

(int l,

int r)

return l;

}

當我們將區間 [l, r] 劃分成 [l, mid - 1] 和 [mid, r] 時,其更新操作是 r = mid - 1或者 l = mid;,此時為了防止死迴圈,計算 mid 時需要加 1 。

int

bsearch_2

(int l,

int r)

return l;

}

整數二分模板(AcWing 789)

這裡帶來一手整數的二分模板。bool check int x 檢查x是否滿足某種性質 區間 l,r 被劃分成 l,mid 和 mid 1,r 時使用 int bsearch 1 int l,int r returnl 區間 l,r 被劃分成 l,mid 1 和 mid,r 時使用 int bsear...

二分的模板(花式二分)

對於不下降序列a,n為序列a元素的個數,key為關鍵字 1.求最小的i,使得a i key,若不存在,則返回 1 int binary search 1 inta,intn int key if a r key returnr return 1 2.求最大的i,使得a i key,若不存在,則返回 ...

二分答案模板

include include 必須包含的標頭檔案 using namespace std int main int tmp upper bound point,point 5,7 point 按從小到大,7最多能插入陣列point的哪個位置 printf d n tmp tmp lower bou...