蓝桥杯 算法提高 ADV-1164 和谐宿舍 python AC

贪心,二分

同类型题:蓝桥杯 算法提高 ADV-1175 打包

python 复制代码
def judge(x):
    wood = 0
    max_val = 0
    ans_len = 0
    for i in ll:
        if i > x:
            return False
        elif max(max_val, i) * (ans_len + 1) <= x:
            max_val = max(max_val, i)
            ans_len += 1
        else:
            wood += 1
            max_val = i
            ans_len = 1
    if ans_len:
        wood += 1
    return wood <= m


n, m = map(int, input().split())
ll = list(map(int, input().split()))
l, r = 0, max(ll) * len(ll)
while l < r:
    mid = (l + r) // 2
    if judge(mid):
        r = mid
    else:
        l = mid + 1
print(l)

函数遍历中加入了一个剪枝,判断当单个画大于木板时直接返回false,否则代码会直接判断加入新元素后的大小

相关推荐
小徐学编程-zZ14 分钟前
量产测试数据
python·压力测试·数据库架构
QQ80578065117 分钟前
django基于机器学习的电商评论情感分析系统设计实现
python·机器学习·django
X journey23 分钟前
机器学习进阶(13):支持向量机SVM
算法·机器学习·支持向量机
wx090924 分钟前
stata实现机器学习的环境配置
python·机器学习·stata
洛水水41 分钟前
【力扣100题】30.二叉树的直径
算法·leetcode·职场和发展
gihigo19981 小时前
Bezier曲线曲面生成算法
算法
平行侠2 小时前
024多精度大整数 - 突破硬件精度限制的任意精度运算
数据结构·算法
nuowenyadelunwen2 小时前
CS 61A Lab 2 笔记:短路求值、高阶函数与 Lambda 表达式
python·函数式编程·cs61a·berkeley
IronMurphy2 小时前
【算法四十五】139. 单词拆分
算法
qq_422828623 小时前
android图形学之SurfaceControl和Surface的关系 五
android·开发语言·python