二分法作為分治中最常見的方法,適用於單調函式,逼近求解某點的值。但當函式是凸性函式時,二分法就無法適用,這時三分法就可以「大顯身手」~~
如果圖形是上凸或者下凸的,就可以用三分法求 極點。
題目大意:求人從左向右走動時,影子的長度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 簡單定義 在乙個單調有序 注意一定是有序 的集合中查詢元素,每次將集合分為左右兩部分,判斷解在哪個部分中並調整集合上下界,重複直到...