题意:
给你N根网线,要求分成K等份,求能等分的最大长度
解题思路:
二分结果,求上界
注意:
注意精度
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#define MAXN0 10010
#define eps 1e-8
int N,K;
double seg[MAXN0];
int dcmp(double x){
if(fabs(x)<eps)return 0;
return x<0?-1:1;
}
void solve(){
double L,R,Mid;
L = 0.01;
R = 1e+5;
int tmp = 0;
while(dcmp(R-L)>0){
Mid = L + (R - L)/2;
tmp = 0;
for(int i=0;i<N;++i){
tmp+=(int)(seg[i]/Mid);
}
if(tmp>=K){
L = Mid;
}
else {
R = Mid;
}
}
printf("%.2lf\n",L);
}
int main(){
while(scanf("%d%d",&N,&K)!=EOF){
if(!N&&!K)break;
for(int i=0;i<N;++i){
scanf("%lf",&seg[i]);
}
solve();
}
return 0;
}