筆記 二分答案

2022-09-02 02:33:10 字數 568 閱讀 9361

二分答案 o(nlogm)

對一段有序的序列 每次二分,從而快速的查詢。解決的問題常是「使最大值最小」或「使最小值最大」。

注意:①注意二分的序列是有序的,對於無序的序列進行二分需要先排序。

②二分的區間盡可能大(給定區間左右端點+-1)

③根據題目要求,設定好check函式。

④防止死迴圈。↓

模板:

1

//第一種

2while(r-1>l)3

8 printf("%d"

,l);9//

第二種10

//①

11while(l17 printf("

%d",l-1

);18//②

19while(l25 printf("

%d",r);

例題:【noip2015】【luogu2678】跳石頭 →簡單的二分,注意特判

【codevs2072】分配房間 →簡單的二分,和跳石頭很像,注意check函式的設定

【noip2016】【luogu1083】借教室 →較難,二分+差分

二分查詢與二分答案

主要用於在乙個單調的函式中查詢某值 連續函式的情況 若當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y 則 l mid,否則 r mid 直至 r l eps 當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y...

二分查詢和二分答案

1.解釋 優點 查詢速度快。缺點 待查表為有序表。4.時間複雜度 o log n 5.示例 p2249查詢 include include using namespace std long long n,m,a 1000005 b 100005 l,r,mid,cnt,x intmain for i...

二分與二分答案學習

判斷left,mid,right的符號進行區間的精確。如下為遞迴二分求零點的操作 double find zero point double left,double right,double precesion double mid right left 2 if f mid 0 if f mid ...