zoukankan      html  css  js  c++  java
  • 算法91----切绳子

    不能一、题目:切绳子

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

    输入:第一行2个正整数N,M,表示N根原始的绳子,和最终需要M根绳子数

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

    其中,1≤N、M≤100000,0 <Li<1000000000

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

    输入:

    3 4

    3 5 4

    输出:

    2.5

    二、思路:

      在绳子长度中进行二分查找最长的长度,然后计算能切出来的绳子根数总和,如果能达到则返回结果。

    三、代码

    def cut(L,n,m):
        sumN = 0
        for i in range(n):
            sumN += L[i]
        if sumN < m:
            print(0)
            return False
        if n >= m:
            print(L[0])
      #l为最大长度/m,u为所有长度和/m。 l , u
    = max(L)/m , sumN(L)/m while round(l,3) < round(u,3): mid = (l + u ) / 2 sumN = 0 for i in range(n): sumN += L[i] // mid if sumN < m: u = mid else: l = mid print(round(l,2)) return True n , m = input().split() n , m = int(n) , int(m) L = list(map(int,input().split())) cut(L,n,m)
  • 相关阅读:
    常用词汇短语
    Java中的数据结构
    Java中的设计模式
    .NET中的编译、程序调用
    常用口语
    0. Angular框架原理
    茶叶
    NPOI自定义单元格背景颜色
    ASP.NET MVC添加Action就找不到
    navicat for mysql 导入SQL Server显示中文乱码解决办法
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/10542404.html
Copyright © 2011-2022 走看看