POJ 1064 二分搜尋

2021-07-08 12:19:48 字數 571 閱讀 7591

/*poj 1064

*題目大意:有n條繩子,他們的長度分別為li,如果從他們中切割k條長度相同的繩子的話,這k條繩子每條最長能有多長?答案保留到小數點後2位

*演算法分析:這個問題用二分搜尋可以非常容易的求得答案。讓我們套用二分搜尋的模型試著解決這個問題。

* 令:條件c(x):=可以得到k條長度為x的繩子

* 則問題變成了求滿足c(x)條件的最大的x。在區間初始化時, 只需使用充分大的數inf作為上界即可

* 現在的問題是是否可以高效的判斷c(x)。由於長度為li的繩子最多可以切出floor(li/x)段長度為x的繩子,因此

* c(x) = (floor(li/x)的總和是否大於或等於k)、、它可以在o(n)的時間內被判斷出來。

*/int n, k;

double l[max_n];

//判斷是否滿足條件

bool c(double x)

void solve()

printf("%.2f\n",floor(ub*100) / 100);

}

POJ 1064 二分搜尋

poj 1064 題目大意 有n條繩子,他們的長度分別為li,如果從他們中切割k條長度相同的繩子的話,這k條繩子每條最長能有多長?答案保留到小數點後2位 演算法分析 這個問題用二分搜尋可以非常容易的求得答案。讓我們套用二分搜尋的模型試著解決這個問題。令 條件c x 可以得到k條長度為x的繩子 則問題...

POJ1064 簡單二分

題意 有n條繩子,他們的長度分別為li。如果從他們中切割出k條長度相同的繩子的話,這k條繩子每條最長能有多長。答案保留到小數點後兩位。思路 二分搜尋的模型解決 求滿足某個條件c x 的最小 大 的x 這一問題。這個題裡 c x 可以得到k條長度為x的繩子 由於長度為li的繩子最多可以切出floor ...

poj 1064 二分答案

傳送門 problem 1064 題意 有n條繩子,長度分別為 length 1,2,3,n 如果從它們中切割出k條長度相同的繩子,這k條繩子每條最長有多長?結果保留兩位小數。題解 二分可能的長度。ac 精度問題 解範圍為 l,r 27double l 0,r maxl 1 28 for int i...