POJ 1064 分割線纜(二分查詢)

2021-09-20 15:28:03 字數 1993 閱讀 6407

這題精度控制是難點,方法很簡單,二分查詢

/**

* @description: poj1064,多根電纜切成指定段數(相同長度),求每段最大長度

* @author: michael ming

* @date: 2019/5/2 15:14

* @modified by:

*/#include

#include

#include

#include

using

namespace std;

intmain()

while

(maxlen - minlen >

1e-3)if

(cable_we_get >= target)

minlen = mid;

else

maxlen = mid;

}// mid = double(floor(mid*100))/100.0;

// cout << fixed << setprecision(2) << mid << endl;

printf

("%.2lf\n"

,floor

(mid*

100)

/100);

return0;

}

/**

* @description: poj1064,多根電纜切成指定段數(相同長度),求每段最大長度

* @author: michael ming

* @date: 2019/5/2 15:14

* @modified by:

*/#include

#include

#include

#include

using

namespace std;

intmain()

while

(maxlen - minlen >

1e-3)if

(cable_we_get >= target)

minlen = mid;

else

maxlen = mid;

} cout << fixed <<

setprecision(2

)<<

floor

(maxlen*

100)

/100.0

<< endl;

// printf("%.2lf\n", floor(maxlen*100)/100);

// 以上兩種寫法都可以ac,但是注意表示式內不要寫mid,要寫maxlen

// 最後如果是mid=1.999,保留兩位,直接是1.99

// maxlen是2.001,直接保留2.00

return0;

}

/**

* @description: poj1064 數字放大100倍做法,輸入浮點數分成整數部分和小數部分,避免1.50輸入後變成1.4999999

* @author: michael ming

* @date: 2019/5/2 20:00

* @modified by:

*/#include

using

namespace std;

intmain()

while

(maxlen - minlen >=0)

if(cable_we_get >= target)

minlen = mid+1;

else

maxlen = mid-1;

} cout << maxlen/

100<<

"."<<

(maxlen/10)

%10<< maxlen%

10<< endl;

return0;

}

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