680. 剪绳子

比较好想的浮点数二分吧,虽然提前知道标签是二分>_<

const int N=1e5+10;
double a[N];
int n,m;

bool check(double mid)
{
    int cnt=0;
    for(int i=0;i<n;i++) cnt+=int(a[i]/mid);
    return cnt>=m;
}

int main()
{
    cin>>n>>m;

    double l=0,r=0;
    for(int i=0;i<n;i++) cin>>a[i],r=max(r,a[i]);

    for(int i=0;i<100;i++)
    {
        double mid=(l+r)/2;
        if(check(mid)) l=mid;
        else r=mid;
    }

    printf("%.2f\n",l);
    //system("pause");
    return 0;
}
posted @ 2021-01-21 18:04  Dazzling!  阅读(50)  评论(0编辑  收藏  举报