POJ 1064題目解答

2022-09-23 23:36:16 字數 1033 閱讀 1170

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

定義check函式:

check(x): floor(li/x)的總和是否不小於k.

(一般情況下最大化問題設為」不小於」, 最小化問題設為」不大於」.)

這道題需要注意的是輸出的處理, 假如我們用%.2f直接輸出r, 那麼會wa, 因為%.2對r的小數點第三位的處理是四捨五入.

此外, 用二分搜尋處理這種答案為小數的問題時, 要注意誤差. 建議直接for迴圈個100次, 這樣子得出來的答案可以達到10?30的精度範圍, 基本是沒有問題的.

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include //x=flt,dbl,ldbl;x_mant_dig,x_dig,x_min_10_exp,x_min_10_exp,x_min,x_max,x_epsilon

#include //int_max,llong_max

#include

#include

using namespace std;

typedef long long ll;

const double pi = acos(-1.0);

#define inf 0x3f3f3f3f

int n, k;

double l[10009];

bool check(double x)

int main(void){

//freopen("in", "r", stdin);

//freopen("out", "w", stdout);

scanf("%d%d", &n, &k);

for(int i=0; i

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