POJ 1064 Cable master
把以前的一篇文章转成随笔
给你n根线,现在要把这n根线切割成k根等长(设长为len)的线,问能切得的最长的len为多少。
二分搜索。
别用G++;
#include <cstdio> #include <iostream> using namespace std; int n; int K; double a[10005]; double maxn; int main() { scanf("%d %d",&n,&K); for(int i=1;i<=n;i++) { scanf("%lf",&a[i]); maxn=max(maxn,a[i]); } double l=0.0; double r=maxn; for(int i=1;i<=100;i++) { double mid=(l+r)/2; int ans=0; for(int j=1;j<=n;j++) { ans+=(int)(a[j]/mid); } if(ans>=K) { l=mid; } else { r=mid; } } printf("%.2lf",int(r*100)*0.01); return 0; }