題目描述
有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條繩子的長度,兩數間用乙個空格分隔。每條繩...