工地現有 n 根鋼管,第 i 根鋼管的長度為 a_i 。
現在想用這 n 根鋼管來做乙個支撐用的柱子。我麼可以切割這些鋼管成為更短的鋼管,但是不能縫合兩根鋼管。為了安全起見,柱子必須用 至少 k 根長度相同的鋼管加上混凝土製成,並且要求鋼管長度必須為 整數。
這個柱子最高能建成多高(鋼管可以有剩餘)。
輸入格式
輸入第一行乙個整數 n,k(1≤n,k≤10000)。
接下來一行輸入 n 個空格隔開的整數 l_i (1≤ l_i ≤10^8 ),表示每根鋼管的長度。
輸出格式
輸出最大的高度。
樣例輸入1複製
2 48 4
樣例輸出1複製
2樣例輸入2複製
8 812 3 14 12 14 20 4 8
樣例輸出2複製
7
#include
using
namespace std;
//想要分割出來的鋼管高度越高,那麼能分割出來的就越少
int a[
10005];
//把每根鋼管的長度存放起來
intmain()
int l =
0, r =
100000001
;//設起始最大高度為r 右邊界
while
(l < r)
if(cnt >= k)
else
} cout << r -
1<< endl;
//這裡輸出l-1或者r-1都可以,因為最後結果出來l與r是相等的
return0;
}
繩子切割 二分查詢
題目描述 有n條繩子,它們的長度為li li 1000 如果從它們中切割出k條長度相同的繩子的話,這條繩子每條最長能有多長?答案保留到小數點後2位。輸入輸入包含兩行,第一行有兩個整數n和k,n代表n條繩子,k代表切割出的長度。4 11 8 02 7.43 4.57 5.39 輸出輸出能切割出最長的長...
二分查詢 網線切割
二分查詢也稱折半查詢 binary search 它是一種效率非常高效的查詢方法。每次拿目標數值 以下用value表示 與陣列中間位置的資料 以下用arry mid 表示,mid表示陣列中間位置索引值 進行比較,如果value大於arry mid 繼續將value與大於arry mid 部分的中間位...
二分 木棒切割
問題 給出n根木棒,長度均已知,現在希望通過切割他們來得到至少k段長度相等的木棒 長度必須為整數 問這些長度相等的木棒最長有多長?這一題可以利用二分的思想來求解,最短是0 left 最長為最長木棒的長度 right 不斷對這個區間進行二分,且每次分完計算所能得到的木棒的條數,如果相同則返回,否則繼續...