1. 程式人生 > >【POJ】1064Cable master

【POJ】1064Cable master

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