问题标题: 一共有N根绳子,第i根绳子长度为Li,最终需要剪出M根等长的绳子 可以对着N根绳子进行任意裁剪(只能裁剪不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。 输入格式 第一行 包含2个整数N,M,表示原始绳子的数量和需求等长绳子的数量,其中1≤N,M≤10^5 第二行 N个整数,分别表示每根绳子的长度Li,其中0<Li<10^9 输出格式 输出一个数字,表示裁剪后最长的长度,要求绳子的长度是整数 输入输出样列 输入样例1: 3 4 3 5 4 输出样例1: 2 输入样例2: 5 10 6 5 8 5 7 输出样例2: 2

0
0
已解决
夏义博
夏义博
初级守护
初级守护

一共有N根绳子,第i根绳子长度为Li,最终需要剪出M根等长的绳子

可以对着N根绳子进行任意裁剪(只能裁剪不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。

输入格式

第一行 包含2个整数N,M,表示原始绳子的数量和需求等长绳子的数量,其中1≤N,M≤10^5

第二行 N个整数,分别表示每根绳子的长度Li,其中0<Li<10^9

输出格式

输出一个数字,表示裁剪后最长的长度,要求绳子的长度是整数

输入输出样列

输入样例1:复制

 
3 4 3 5 4

输出样例1:复制

 
2

输入样例2:复制

 
5 10 6 5 8 5 7

输出样例2:复制

 
2

在线等


0
已采纳
被禁言 何冯成
何冯成
中级光能
中级光能

主函数:

 scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++)scanf("%lf",&a[i]),r+=a[i];
    while(r-l>1e-4)
    {
        mid=(l+r)/2;
        if(check(mid))l=mid;
        else r=mid;
    }
    sprintf(s+1,"%.3f",l);
    s[strlen(s+1)]='\0';
    printf("%s",s+1);

 

0
0
0
赵逸凡
赵逸凡
初级启示者
初级启示者

很显然是二分,像这种思路都没有直接问的都可以算水帖了。

我要回答