時間限制: 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 輸出格式 切割後每條繩子的...