poj 1064 Cable master
题意:给n段绳子,长度分别为c1,c2.....,切成相等的k段,求最大的长度
分析:二分长度,唯一注意的一点,输出的时候的精度
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn=1e4+5; const double esp=1e-9; double c[maxn]; int n,k; bool judge(double mid){ int cnt=0; for(int i=0;i<n;i++) cnt+=(int)(c[i]/mid); return cnt>=k; } int main(){ while(~scanf("%d%d",&n,&k)){ double l=0,r=0; for(int i=0;i<n;i++){ scanf("%lf",c+i); r+=c[i]; } r/=k; while(r-l>esp){ double mid=(l+r)/2; if(judge(mid)) l=mid; else r=mid; } r=floor(r*100)/100; printf("%.2f\n",r); } return 0; }