POJ1064 簡單二分

2021-09-25 23:19:31 字數 609 閱讀 3248

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

思路:二分搜尋的模型解決:「求滿足某個條件c(x)的最小(大)的x」這一問題。

這個題裡

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

由於長度為li的繩子最多可以切出floor(li / x) 段長度為x 的繩子,因此

c(x):(floor (li / x) )的總和是否大於或等於k

**如下

#include #include #include #includeusing namespace std;

long long n,k;

const int maxn = 1e6+10;

double l[maxn];

int inf = 0x3f3f3f;

bool c(double x)

int main()

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

/*輸出要注意,不是簡單的0.2f就完事。因為會自動四捨五入*/

}return 0;

}

POJ 1064 二分搜尋

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

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...

POJ 1064 二分搜尋

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