繩子切割 二分查詢

2021-10-03 17:44:44 字數 1010 閱讀 3126

題目描述

有n條繩子,它們的長度為li(li<=1000).如果從它們中切割出k條長度相同的繩子的話,這條繩子每條最長能有多長?答案保留到小數點後2位。

輸入輸入包含兩行,第一行有兩個整數n和k,n代表n條繩子,k代表切割出的長度。

4 11

8 .02 7.43 4.57 5.39

輸出輸出能切割出最長的長度maxl。

思路方法一:二分

這個題是二分查詢典型的例子,二分列舉0到繩子的最大極限,當滿足條件增大maxl的列舉長度,否則就減小l的maxl。

**

#include

const

int maxn=

1005

;double arr[maxn]

;int n,k;

bool cheak

(double l)

if(sum>=k)

return true;

else

return false;

}int

main()

printf

("%0.2f"

,l);

return0;

}/*4 11

8.02 7.43 4.57 5.39

*/

方法二:遞迴分治:

滿足遞迴右邊,不滿足遞迴左邊。

**

#include

const

int maxn=

1005

;double arr[maxn]

;int n,k;

double

solve

(double l,

double r)

if(r-l>

0.001

)else

return l;

}int

main()

/*4 11

8.02 7.43 4.57 5.39

*/

二分查詢 切割問題

工地現有 n 根鋼管,第 i 根鋼管的長度為 a i 現在想用這 n 根鋼管來做乙個支撐用的柱子。我麼可以切割這些鋼管成為更短的鋼管,但是不能縫合兩根鋼管。為了安全起見,柱子必須用 至少 k 根長度相同的鋼管加上混凝土製成,並且要求鋼管長度必須為 整數。這個柱子最高能建成多高 鋼管可以有剩餘 輸入格...

二分查詢 網線切割

二分查詢也稱折半查詢 binary search 它是一種效率非常高效的查詢方法。每次拿目標數值 以下用value表示 與陣列中間位置的資料 以下用arry mid 表示,mid表示陣列中間位置索引值 進行比較,如果value大於arry mid 繼續將value與大於arry mid 部分的中間位...

分割繩子(二分)

時間限制 1 sec 記憶體限制 128 mb 題目描述 現有n條繩子,它們的長度分別為l1,l2,ln,如果從它們中切割出k條長度相同的繩子,這k條繩子每條最長能有多長?輸入共有兩行,第一行包含兩個正整數n和k,用乙個空格分隔 第二行包含n個數,依次表示n條繩子的長度,兩數間用乙個空格分隔。每條繩...