砍樹問題 二分法

2021-09-20 07:29:01 字數 776 閱讀 8020

題目描述森林裡有n棵高高低低的樹木,伐木工阿強接到老闆的通知,需要k段等長的木材,阿強為了能掙更多錢,所以砍的木材要盡可能的長,所以引出乙個問題,阿強最長能砍到多長的木材。

輸入

第一行輸入n和k,n表示n棵樹木,k表示老闆需要k段木材。(1<=n<=100,1<=k<=100)

第二行輸入n個數,第i個數表示第i棵樹的高度。(1<=樹的高度<=100000000)

輸出阿強最長能砍到的木材的長度。(精確到小數點後兩位)

樣例輸入

3 43 5 4

樣例輸出

2.50

題解:這道題我一開始是暴力,因為當時還不會二分法,然後直接就超時,後來看演算法書發現這道題原來是用二分的。這道題就是找不斷通過二分法找k值,然後從存樹的陣列頭到尾計算每棵樹能砍多少長度為k的木頭。但是要注意的是不能找到乙個num == k 就直接break,因為像樣例在找到2.47的時候也符合 num == k,所以一定要把條件設定為 (right-left)>0.002。0.002其實題中已經給你提示了。**如下

#include using namespace std;

const int inf = 0x3f3f3f3f;

int main()

double left = 0, right = inf, mid = 0;

while ((right-left)>0.002)

printf("%0.2lf", mid);

return 0;

}

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法,二分搜尋

二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...