整數二分模板(AcWing 789)

2022-08-21 01:06:08 字數 757 閱讀 3642

這裡帶來一手整數的二分模板。

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 bsearch_2(int l, int

r)

return

l;}

二分模板有兩個需要依據情況而定 如果滿足題意需要讓l=mid 那麼我們需要讓mid=l+r+1;另外一種則無需加1.

下面讓我們看一道例題來自acwing.789

1 #include//這是一道整數二分的基礎題輸出各個資料在陣列中的位置

2using

namespace

std;

3int

n,q;

4const

int n=1000010;5

inta[n];

6int

main()713

while(q--)

1425

if(a[l]!=x) cout<<"

-1 -1

"<26else

2736 cout38}

39return0;

40 }

整數二分 AcWing 789 數的範圍

給定乙個按照公升序排列的長度為n的整數陣列,以及q個查詢。對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 輸入格式 第一行包含整數n和q,表示陣列長度和詢問個數。第二行包含n個整數 均在1 10000範圍內 表示完整陣列。接下來q行,每行包...

acwing 二分模板

二分模板一共有兩個,分別適用於不同情況。演算法思路 假設目標值在閉區間 l,r 中,每次將區間長度縮小一半,當l r時,我們就找到了目標值。當我們將區間 l,r 劃分成 l,mid 和 mid 1,r 時,其更新操作是 r mid 或者 l mid 1,計算 mid 時不需要加 1 int bsea...

二分的模板(花式二分)

對於不下降序列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,若不存在,則返回 ...