【POJ】1064Cable master
阿新 • • 發佈:2018-05-12
style efi lse 輸出 bsp for define class clu
白皮書的二分
題意:有n條繩子,他們的長度分別為li,從他們中切個出k條長度相同的繩子的話,這k條繩子每條最長能有多長?保留小數點後兩位
分析:二分
#include<cstdio> #include<cstring> #include<cmath> #define maxn 10010 #define INF 100001 double a[maxn]; int n,k; bool dix(double x) { int num=0,i; for(i=0;i<n;++i) num+=(int)(a[i]/x);return num>=k;//滿足條件是返回true,不滿足返回false } int main() { while(scanf("%d%d",&n,&k)!=EOF) { int i; for(i=0;i<n;++i) scanf("%lf",&a[i]); double left=0,right=INF,mid; i=1000; while(i--) { mid=(left+right)/2; if(dix(mid)) left=mid; else right=mid; } printf("%0.2f\n",floor(right*100)/100);//註意精度,可不明白%0.2lf輸出為什麽會錯 } return 0; }
【POJ】1064Cable master