分割繩子(二分)

2021-09-03 07:58:29 字數 916 閱讀 8449

時間限制: 1 sec  記憶體限制: 128 mb

題目描述

現有n條繩子,它們的長度分別為l1,l2,„„,ln,如果從它們中切割出k條長度相同的繩子,這k條繩子每條最長能有多長?

輸入共有兩行,第一行包含兩個正整數n和k,用乙個空格分隔;第二行包含n個數,依次表示n條繩子的長度,兩數間用乙個空格分隔。每條繩子長度的小數不超過兩位。(1<=n<=1000,1<=k<=1000,1<=li<=10000)

輸出僅包含乙個數,表示所得k繩子的最大長度。答案四捨五入保留小數點後兩位。

複製樣例資料

4 11

8.02 7.43 4.57 5.39

樣例輸出

2.00
簡單的一到二分題,先把一根中分k條的最大值找出當做l,然後最大化能分的就是正好總值/k做為r,然後判斷是否可以分成k根,如果分不夠,說明取得值太大,l = mid,夠分或者多了(!!注意等號的位置),r = mid;

/**/

#include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll;

using namespace std;

const double eps = 1e-8;

int n, k;

double a[1005];

int main()

r = sum / k;

while(fabs(r - l) > eps)

if(num >= k)else

} printf("%.2lf\n", l);

return 0;

}/**/

最後注意下精度問題就行了

分割繩子(二分)

現在有n 1 n 1000 條繩子,他們的長度分別為l1,l2,ln 1 li 10000 如果從他們中切割出k 1 k 1000 條長度相同的繩子,這k條繩子每條最長能多長?收起共有兩行,第一行包含兩個正整數n和k,用乙個空格分割 第二行包含n個數,一次表示n條繩子的長度,兩數間用乙個空格分隔,每...

繩子切割 二分查詢

題目描述 有n條繩子,它們的長度為li li 1000 如果從它們中切割出k條長度相同的繩子的話,這條繩子每條最長能有多長?答案保留到小數點後2位。輸入輸入包含兩行,第一行有兩個整數n和k,n代表n條繩子,k代表切割出的長度。4 11 8 02 7.43 4.57 5.39 輸出輸出能切割出最長的長...

割繩子問題(二分)

題目描述 有 n 條繩子,它們的長度分別為 l ili 如果從它們中切割出 k 條長度相同的繩子,這 kk 條繩子每條最長能有多長?答案保留到小數點後 2 位 直接捨掉 2 位後的小數 輸入格式 第一行兩個整數 n 和 k,接下來 n 行,描述了每條繩子的長度 l ili 輸出格式 切割後每條繩子的...