zoukankan      html  css  js  c++  java
  • 剪绳子

    转载:https://www.acwing.com/problem/content/description/682/

    题目

    有N根绳子,第i根绳子长度为Li,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。

    输入格式

    第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。

    第二行包含N个整数,其中第 i 个整数Li表示第 i 根绳子的长度。

    输出格式

    输出一个数字,表示裁剪后最长的长度,保留两位小数。

    数据范围

    1N,M1000001≤N,M≤100000,
    0<Li<1090<Li<109

    输入样例:

    3 4
    3 5 4
    

    输出样例:

    2.50
    

    样例解释

    第一根和第三根分别裁剪出一根2.50长度的绳子,第二根剪成2根2.50长度的绳子,刚好4根。

    C++代码如下:

    //考虑用二分法来做(找到某种性质的分界点)
    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    const int N=1e5+10;
    int a[N],n,m;
    bool check(double mid)
    {
        int sum=0;
        for(int i=0;i<n;i++)
        {
            sum+=a[i]/mid;
        }
        if(sum>=m) return true;
        return false;
    }
    int main()
    {
        cin>>n>>m;
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        double l=0,r=1e9;
        while(r-l>1e-4)//因为此时两数类型为double,所以不直接用r>l
        {
            double mid=(l+r)/2;
            if(check(mid)) l=mid;
            else r=mid;
        }
    
        printf("%.2f
    ",r);
        return 0;
    }

    1

  • 相关阅读:
    ptunnel-简易使用
    socat-简易使用
    ncat-相关参数用法
    通过iodine简单实现dns隧道技术
    HTB-靶机-Safe
    HTB-靶机-Rope
    【mysql子查询&组合查询 05】
    【mysql 库表操作 07】
    【mysql插入&修改&删除 06】
    【mysql 连接查询 04】
  • 原文地址:https://www.cnblogs.com/zkfopen/p/10996786.html
Copyright © 2011-2022 走看看