二分法模板

2022-05-21 21:24:13 字數 882 閱讀 9149

二分法是乙個非常高效的演算法,它常常用於計算機的查詢過程中

//二分答案 

while(left <= right)

else

right = mid - 1;

}printf("%d", ans);

p2390 地標訪問

題目描述

貝西在一條道路上旅行,道路上有許多地標,貝西想要在日落之前訪問盡可能多的路標。將道路視為一條數軸,貝西從原點出發,道路上有n(1<=n<=50000)個地標,每個地標有乙個座標x[i](-100,000 ≤ xi ≤ 100,000)且地標的座標各不相同,t(1≤ t ≤1000000000)分鐘之後將會日落。

思路:最暴力的解法是列舉所有地標區間,然後判斷最大的訪問地標數。但是可能會超時,運用二分法,列舉負點,二分正點,得到答案。

#include#define intn long long

#define _0for(i, a) for(int i = 0; i < (a); ++i)

#define _1for(i, a) for(int i = 1; i <=(a); ++i)

using namespace std;

int x[50005];

int y[50005];

main(void)

sort(x+1,x+1+cnt1);

sort(y+1,y+1+cnt2);

y[++cnt2]=0;

int anss=0;

_1for(i,cnt2)//y[i]為負點

else

}anss=max(anss,ans);

} cout<}

二分法模板

二分法基本思想 在乙個有序序列中快速查詢乙個值的位置,可以先查詢中間值,比較大小,分析該值在上半段還是下半段,然後在下乙個區間再次二分查詢,時間複雜度為 logn 二分法的應用不僅僅如此,在其他很多方面都有應用,比如acm中從 0 到 正無窮 二分答案等等。由於二分法基本思想比較簡單這裡不做過多描述...

二分法模板

我發現每次我做二分題目的時候,自己寫的upper bound和lower bound老是會出錯。而且對於普通的整數二分的時候lb和rb不好控制 雖然有時候可以直接用模板的stl,但是感覺對於某些問題還是不是很方便 主要是對於模板struct不是很支援 我直接模仿stl寫了兩個自己用的模板,以後就用這...

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...