二分和三分法

2021-06-25 18:24:06 字數 794 閱讀 5609

二分法作為分治中最常見的方法,適用於單調函式,逼近求解某點的值。但當函式是凸性函式時,二分法就無法適用,這時三分法就可以「大顯身手」~~

如果圖形是上凸或者下凸的,就可以用三分法求 極點。

題目大意:求人從左向右走動時,影子的長度l

的最大值

解題思路:當人在最左端的時候影子的長度全部投在地上,漸漸向右走影子開始投入到牆上。當人走到最右端影子全部在牆上。函式式先增加後減小的,滿足三分法求解;

double cal(type a)

推導過程如下:(運用2

次相似三角形)

1>k/(d+k) = z/h;  ---> k = dz/(h-z)

2>k/(y+k) = z/h;   ---> k = zy/(h-z)

so  d/(h-z) = y/(h-z) ----解出

z---->  z = h - (h-h)*d/x

l = z + y  ---> l = d-x+h-(h-h)*d/x;

#include #include#include#include#define ex 1e-9

using namespace std;

double h,h,d;

double f(double x)

int main()

printf("%.3f\n",f(r));

}return 0;

}

二分三分法

x 待查詢的值,caculate 所要查詢的函式,這裡單調遞增。double low 區間下界 high 區間上界 mid while high low 1.0e 6 有區間下界left,區間上界right,mid為中點,midmid為靠近right的四等分點。即 mid left right 2 ...

二分三分法 (二)

最近剛學了二分法,還沒有學三分,所以在上課之前,把三分總體的預習了一下,感覺三分應該和二分大體的思路還是一致的,二分的思路是在乙個單調的數列基礎上,每次都求中間值,然後不斷縮小,最後求出解,這樣可以把時間壓縮到最小化。然而三分主要運用的方面是針對於數列是凹函式或者凸函式,先將乙個區間分成3份,每份佔...

二分三分法總結

1 二分法,是一種降低dp複雜度的有效演算法,二分查詢用於在多條記錄中快速找到待查詢的記錄。它的思想是 每次將查詢的範圍縮小一半,直到最後找到記錄或者找不到記錄返回!2 簡單定義 在乙個單調有序 注意一定是有序 的集合中查詢元素,每次將集合分為左右兩部分,判斷解在哪個部分中並調整集合上下界,重複直到...