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)
  • 相关阅读:
    Vijos p1518河流 树形DP
    xhtml学习
    event.keyCode与event.which
    css学习笔记(一)
    Web世界中的Session学习(转载)
    wsdl中的数组类型
    一个很简单的Java调用WSDL示例 (转载)
    XML Schema complexContent 元素
    web service
    mysql5.6免安装配置
  • 原文地址:https://www.cnblogs.com/Lee-yl/p/10542404.html
Copyright © 2011-2022 走看看