二分法是乙個非常高效的演算法,它常常用於計算機的查詢過程中。
//二分答案
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...