博客
关于我
2019ICPC 沈阳重现 L-Flowers(二分)
阅读量:390 次
发布时间:2019-03-05

本文共 742 字,大约阅读时间需要 2 分钟。

Jack想要为爱人准备若干鲜花束,每个花束必须包含M朵不同物种的花。花店有N种花,第i种的花有a_i朵。Jack想知道最多能准备多少个花束。

解决这个问题,可以使用二分查找法。对于一个给定的x(假设x是花束的数量),我们需要检查是否能满足至少x个花束,每个花束有M朵花,且每种花的使用数量不超过其可用数量。

具体步骤如下:

  • 输入处理:读取输入数据,获取测试用例的数量T。对于每个测试用例,读取N、M,然后读取a数组。

  • 初始检查:计算所有花的总数sum_a。如果sum_a < M,无法组成一个花束,直接返回0。

  • 二分查找:设置low=0,high=sum_a / M。进行二分查找,找到最大的x使得sum(min(a_i, x)) >= x*M。

  • 检查函数:对于每个mid值,计算sum(min(a_i, mid)),判断是否满足条件。如果满足,说明x可以更大,调整low=mid+1;否则,调整high=mid-1。

  • 通过这种方法,可以高效地确定最多能准备的花束数量。


    答案:

    使用二分查找法来确定最多能准备的花束数量。具体步骤如下:

  • 输入处理:读取输入数据,获取测试用例的数量T。对于每个测试用例,读取N、M,然后读取a数组。

  • 初始检查:计算所有花的总数sum_a。如果sum_a < M,无法组成一个花束,直接返回0。

  • 二分查找:设置low=0,high=sum_a / M。进行二分查找,找到最大的x使得sum(min(a_i, x)) >= x*M。

  • 检查函数:对于每个mid值,计算sum(min(a_i, mid)),判断是否满足条件。如果满足,说明x可以更大,调整low=mid+1;否则,调整high=mid-1。

  • 通过这种方法,可以高效地确定最多能准备的花束数量。

    转载地址:http://thewz.baihongyu.com/

    你可能感兴趣的文章
    pymysql.err.OperationalError: (1364, “Field ‘id‘ doesn‘t have a default value“)
    查看>>
    Pytorch Tensor 维度操作的形象理解 Tensor.unsqueeze() Tensor.squeeze()
    查看>>
    PyMySQL库对Mysql数据库进行增删改查与工具类封装
    查看>>
    pynput的基本介绍和使用
    查看>>
    pyodbc 通过 IIS7 连接到 MSSQL 2005 服务器
    查看>>
    PyPI 存储库中的 JarkaStealer:深入解析与防范措施
    查看>>
    Pyplot tutorial,Pyplot官方教程自翻译
    查看>>
    PyQ5学习笔记——使用内部槽函数关闭窗口
    查看>>
    PyQ5学习笔记——使用自定义槽函数关闭窗口
    查看>>
    PyQt MimeData 文件名
    查看>>
    PyQt QML Material Design 按钮背景不会改变
    查看>>
    PyQt QString转成python stirng
    查看>>
    PyQt QToolButton在焦点时不更新图标
    查看>>
    PyQt 正确使用 emit() 和 pyqtSignal()
    查看>>
    PyQT-将文件复制到剪贴板
    查看>>
    PYQT.如何在QTableView中插入小部件
    查看>>
    PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
    查看>>
    PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
    查看>>
    PyQt4, class:mouseButtons用法
    查看>>
    PyQt4参考文档
    查看>>