備戰藍橋杯與csp 二分查詢

2021-10-11 01:35:54 字數 1082 閱讀 4968

二分查詢的前提是陣列是有序的(所以經常配合sort函式使用),首先找到陣列中間的值(將陣列分成左右兩部分),比較一下要查詢的數,大了就使用左邊的陣列,小了使用右邊的陣列,接著重複上面的操作,找到或者當左邊右邊重合之後停止查詢.

二分查詢每一次都排除了1/2的資料,我們假設t次之後出現結果(m 條資料)

那麼存在m / 2^t = 1

t = log(m)

時間複雜度為log(n)

#include

#define ll long long

using

namespace std;

ll a[11]

=;// 預設公升序排列

ll binary_sea

(ll num, ll left, ll right)

return-1

;// 查詢不到返回-1

}int

main()

stl 中提供了一些查詢函式,我們可以直接呼叫,而無需再寫乙個函式,但思想還是需要掌握的~

γ1. binary_search

binary_search(beg,end,val)

beg : 查詢開始的位置,左界

end: 查詢結束的位置,右界

val: 需要查詢的資料

γ2. lower_bound
lower_bound(beg,end,val)

返回第乙個大於等於val的位置用法和binary_search一致

γ3. lower_bound
upper_bound(beg,end,val)

返回第乙個大於val的位置用法和binary_search一致

#include

#define ll long long

using

namespace std;

vector v =

;int

main()

備戰藍橋杯與csp 位運算

資料在計算機裡以二進位制的形式存在,所謂位運算便是直接對資料在記憶體中的二進位制位進行操作.1.位與 1 1 1 0 1 0 1 0 0 0 0 0 我們常常利用 運算把 0 消掉,而保持其他位的1不變,除此之外,我們還可以判斷一些數的性質,下面會提到.a b 1 當且僅當a,b均為1 2.位或 1...

備戰藍橋杯與csp 進製轉換

r指的是乙個整數,r進製的意思是指逢r進一,常見的主要有,二進位制,八進位制,十進位制,十六進製制,這些數的特點便是每一位上的數不超過r.與十進位制類似,每高一位,上面的權值也就高了r倍,所以,將r進製轉化為10進製只需要,將每一位上面的數乘以這一位代表的權重,最後相加起來,這裡使用vector來儲...

藍橋杯 分巧克力 二分查詢

兒童節那天有 k 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有 n 塊巧克力,其中第 i 塊是 hi wi 的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出 k 塊巧克力分給小朋友們。切出的巧克力需要滿足 形狀是正方形,邊長是整數 大小相同 例如一塊 6 5...