zoukankan      html  css  js  c++  java
  • 洛谷—— P1577 切绳子

    https://www.luogu.org/problemnew/show/P1577

    题目描述

    有N条绳子,它们的长度分别为Li。如果从它们中切割出K条长度相同的

    绳子,这K条绳子每条最长能有多长?答案保留到小数点后2位。

    输入输出格式

    输入格式:

    第一行两个整数N和K,接下来N行,描述了每条绳子的长度Li。

    输出格式:

    切割后每条绳子的最大长度。

    输入输出样例

    输入样例#1: 复制
    4 11
    8.02
    7.43
    4.57
    5.39
    输出样例#1: 复制
    2.00

    说明

    对于100%的数据 0<Li<=100000.00 0<n<=10000 0<k<=10000

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 inline void read(int &x)
     5 {
     6     x=0; register char ch=getchar();
     7     for(; ch>'9'||ch<'0'; ) ch=getchar();
     8     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
     9 }
    10 
    11 const int N(10005);
    12 
    13 double ans,z;
    14 int n,k,len[N];
    15 
    16 int L,R,Mid;
    17 inline bool check(int x)
    18 {
    19     int cnt=0;
    20     for(int i=n; i; --i)
    21     {
    22         if(cnt>=k) return 1;
    23         if(len[i]/x<1) return 0;
    24         cnt+=len[i]/x;
    25     }
    26     return cnt>=k;
    27 }
    28 
    29 int Presist()
    30 {
    31     read(n),read(k);
    32     for(int i=1; i<=n; ++i)
    33         scanf("%lf",&z),len[i]=z*100;
    34     std:: sort(len+1,len+n+1);
    35     for(L=1,R=len[n]; L<=R; )
    36     {
    37         Mid=L+R>>1;
    38         if(check(Mid))
    39         {
    40             ans=Mid*1./100;
    41             L=Mid+1;
    42         }
    43         else R=Mid-1;
    44     }
    45     printf("%.2lf
    ",ans);
    46     return 0;
    47 }
    48 
    49 int Aptal=Presist();
    50 int main(int argc,char**argv){;}
  • 相关阅读:
    2019年春季学期第三周作业
    2019春第二周作业+一些的挑战作业
    查找整数
    寒假作业3编辑总结
    寒假作业2编辑总结
    对自己影响最大的老师
    2019春第九周作业
    2019春第八周作业
    2019春第七周作业
    2019春第六周作业
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7899199.html
Copyright © 2011-2022 走看看