【Py/Java/C++三种语言OD独家2024D卷真题】20天拿下华为OD笔试之【二分查找】2024D-机器人搬砖【欧弟算法】全网注释最详细分类最全的华为OD真题题解

2024-05-09 3532阅读

从2024年4月15号开始,OD机考全部配置为2024D卷。

注意两个关键点:

  1. 会遇到C卷复用题。虽然可能存在幸存者偏差,但肯定还会有一大部分的旧题。
  2. 现在又支持做完题目之后倒回去改了。就是可以先做200的再做100的,然后可以反复提交。

【Py/Java/C++三种语言OD独家2024D卷真题】20天拿下华为OD笔试之【二分查找】2024D-机器人搬砖【欧弟算法】全网注释最详细分类最全的华为OD真题题解 第1张

有LeetCode算法/华为OD考试扣扣交流群可加 948025485

可上全网独家的 欧弟OJ系统 练习华子OD、大厂真题

绿色聊天软件戳 od1336了解算法冲刺训练

文章目录

  • 题目描述与示例
    • 题目描述
    • 输入描述
    • 输出描述
    • 示例
      • 输入
      • 输出
      • 说明
      • 解题思路
      • 代码
        • 解法一:左闭右开写法
          • python
          • java
          • cpp
          • 解法二:左闭右闭写法
            • python
            • java
            • cpp
            • 时空复杂度
            • 华为OD算法/大厂面试高频题算法练习冲刺训练

              题目描述与示例

              题目描述

              机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第i堆砖中有bricks[i]块砖头,要求在8小时内搬完。机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损耗最小化,尽量减小每次补充的能量格数。

              为了保障在8小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。

              备注:

              1、无需考虑机器人补充能量格的耗时

              2、无需考虑机器人搬砖的耗时

              3、机器人每小时补充能量格只在这一个小时中有效。

              输入描述

              程序输入为"30 12 25 8 19"一个整数数组,数组中的每个数字代表第i堆砖的个数,每堆砖的个数不超过100

              输出描述

              输出在8小时内完成搬砖任务,机器人每小时最少需要充多少个能量格;如果8个小时内无论如何都完成不了任务,则输出"-1"

              示例

              输入

              30 12 25 8 19
              

              输出

              15
              

              说明

              解题思路

              注意,本题和LeetCode875.爱吃香蕉的珂珂、【二分查找】2023C-孙悟空吃蟠桃几乎完全一致。甚至更加简单,因为时间固定为8

              代码

              解法一:左闭右开写法

              python

              # 题目:【二分查找】2023C-机器人搬砖
              # 分值:100
              # 作者:许老师-闭着眼睛学数理化
              # 算法:二分查找
              # 代码看不懂的地方,请直接在群上提问
              # 相关题目:LeetCode875.爱吃香蕉的珂珂
              # 导入向上取整函数ceil,用于后续的计算
              from math import ceil
              # 输入每一个仓库的砖块数目
              nums = list(map(int, input().split()))
              # 设置搬砖时间上限为8h
              h = 8
              # 计算花费在速度k的条件下,所花费的时间h的函数
              def cal_hour_used(nums, k):
                  return sum(ceil(p / k) for p in nums)
              # 二分查找求解问题的函数
              def minEatingSpeed(nums, h):
                  # 左闭右开区间,right取最大的那一堆的值再+1
                  left, right = 1, max(nums) + 1
                  # left和right相等时,区间消失,退出循环
                  while left 

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]