牛牛戰隊的比賽地 二分法 三分法

2021-10-03 00:10:50 字數 1626 閱讀 7611

題意:

給你n個點,讓你求出x座標軸上一點到n個點中最大距離的最小值。

思路:二分(答案具有嚴格單調性,容易驗證答案是否正確)

這裡check函式比較難想

參考使用者:moyangxian

#include

using

namespace std;

typedef

long

long ll;

const

int inf =

0x3f3f3f3f

;const ll mod =

1e9+7;

const

double eps =

1e-8

;const ll maxn =

1e6+5;

int n;

double x[maxn]

,y[maxn]

;double ans1;

double ans2;

double ans;

bool

check

(double mid)

if(xr>=xl)

return1;

else

return0;

}int

main()

double l=

0.0,r=inf*

1.0;

while

(fabs

(r-l)

>eps)

else

} cout

)

}

思路:

三分模板題

最大距離最小,最小的點的左邊和右邊一定比他大,且這個函式顯單調遞減後單調遞增的趨勢,想到三分法。

寫個check函式求每次的最大距離比較即可。

#include

using

namespace std;

typedef

long

long ll;

typedef pair<

int,

int>p;

const

double eps =

1e-8

;const

int ninf =

0xc0c0c0c0

;const

int inf =

0x3f3f3f3f

;const ll mod =

1e9+7;

const ll maxn =

1e5+5;

int n;

double x[maxn]

,y[maxn]

;double

check

(double p)

return res;

}int

main()

double l=

-10000.0

,r=10000.0

;while

(r-l>eps)

printf

("%.5lf"

,check

(r))

;return0;

}

二分法與三分法

二分查詢基於分治策略的一種查詢方法,時間複雜度 o log 是用於解決單調有序問題,縮小問題規模 演算法步驟 演示 int binary search1 int num,int n,int x else return 1 二分問題模型 11110000問題 首先我們需要明確我們的目的是為了不斷縮小問...

二分三分法

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

二分三分法 (二)

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