当前位置: 首页 > news >正文

机器人搬砖 - 华为OD统一考试

OD统一考试(C卷)

分值: 100分

题解: Java / Python / C++

alt

题目描述

机器人搬砖,一共有N堆砖存放在N个不同的仓库中,第 i 堆中有 bricks[i] 块砖头,要求在8小时内搬完。

机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一仓库中搬砖,机器人的能量格每小时补充一次且能量格只在这一个小时有效,为使得机器人损耗最小化,应尽量减小每次补充的能量格数。

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

备注:

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

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

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

输入描述

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

输出描述

输出在8小时内完成搬砖任务,机器人每小时最少需要充多少个能量格;

如果8个小时内无法完成任务,则输出“-1”;

示例1

输入:
30 12 25 8 19输出:
15

示例2

输入:
10 12 25 8 19 8 6 4 17 19 20 30输出:
-1说明:
砖的堆数为12堆存放在12个仓库中,机器人一个小时内只能在一个仓库搬砖,不可能完成任务

题解

解题思路:

  1. 题目要求机器人在8小时内搬完N堆砖,每小时搬砖的数量取决于机器人每小时充能的能量格数。
  2. 机器人每小时只能在一个仓库搬砖,因此仓库数不能超过8。
  3. 需要计算每小时机器人充能的最小能量格数,使得能够在8小时内完成搬砖任务。
  4. 使用二分查找的思想,通过不断调整充能的能量格数,找到一个最小的能量格数,使得在8小时内能够完成搬砖任务。
  5. 判断条件为每小时搬砖的天数是否小于等于8,若是则说明当前充能的能量格数足够,可以减小能量格数,否则需要增加充能的能量格数。

Java

import java.util.Arrays;
import java.util.Scanner;
/*** @author code5bug*/
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);// 读取输入的砖块数int[] bricks = Arrays.stream(in.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();// 机器人一个小时内只能在一个仓库搬砖, 因此仓库数不能超过 8if (bricks.length > 8) {System.out.println(-1);} else {int l = -1, r = Arrays.stream(bricks).max().getAsInt();while (l + 1 < r) {int m = (l + r) >>> 1;if (check(bricks, m)) {r = m;} else {l = m;}}System.out.println(r);}}// 判断机器人每小时充 power 能量,能否在 8 个小时内搬完private static boolean check(int[] bricks, int power) {int days = 0;for (int brick : bricks) {days += (brick + power - 1) / power;}return days <= 8;}
}

Python

from typing import Listdef check(bricks: List[int], power: int) -> bool:"""判断机器人每小时充 power 能量,能否在 8 个小时内搬完"""days = 0for brick in bricks:days += (brick + power - 1) // powerreturn days <= 8if __name__ == '__main__':bricks = list(map(int, input().split()))if len(bricks) > 8:  # 机器人一个小时内只能在一个仓库搬砖,因此仓库数不能超过 8print(-1)else:l, r = -1, max(bricks)while l + 1 < r:m = (l + r) >> 1if check(bricks, m):r = melse:l = mprint(r)

C++

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;// 判断机器人每小时充 power 能量,能否在 8 个小时内搬完
bool check(const vector<int>& bricks, int power) {int days = 0;for (int brick : bricks) {days += (brick + power - 1) / power;}return days <= 8;
}int main() {vector<int> bricks;int brick;while (cin >> brick) {bricks.push_back(brick);}// 机器人一个小时内只能在一个仓库搬砖, 因此仓库数不能超过 8if (bricks.size() > 8) {cout << -1 << endl;} else {int l = -1, r = *max_element(bricks.begin(), bricks.end());while (l + 1 < r) {int m = (l + r) / 2;if (check(bricks, m)) {r = m;} else {l = m;}}cout << r << endl;}return 0;
}

相关练习题

题号题目难易
LeetCode 16311631. 最小体力消耗路径中等
LeetCode 22262226. 每个小孩最多能分到多少糖果中等

‍❤️‍华为OD机试面试交流群每日真题分享): 加V时备注“华为od加群”

🙏整理题解不易, 如果有帮助到您,请给点个赞 ‍❤️‍ 和收藏 ⭐,让更多的人看到。🙏🙏🙏

相关文章:

机器人搬砖 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 机器人搬砖&#xff0c;一共有N堆砖存放在N个不同的仓库中&#xff0c;第 i 堆中有 bricks[i] 块砖头&#xff0c;要求在8小时内搬完。 机器人每小时能搬砖的数量…...

10分钟快速入门正则表达式

在力扣上看了一本付费书籍&#xff0c;终于让我入门了正则表达事... 问题&#xff1a; "^1[3-9]\\d{9}$" 是啥意思 读完本篇小笔记&#xff0c;你就知道&#xff0c;啥是"^1[3-9]\\d{9}$" 这个是啥意思了。 首先&#xff0c;正则表达式&#xff0c;这个名…...

【C++】C++的简要介绍

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 什么是C2. C的发展史3. C的重要性3.1 语言的使用广泛度3.2 在工作领域3.3 在校招领域3.3.1 岗位需求3.3.2 笔试题 3.3.3 面试题 4. 如何学习C4.1 别人怎么学&#xff1f; 1. 什么是C C语言是结构化和模块化的语言&…...

Golang数据库编程详解 | 深入浅出Go语言原生数据库编程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 Golang学习专栏&#xff1a;https://blog.csdn.net/qq_35716689/category_12575301.html 前言 对数据库…...

《游戏引擎架构》 -- 学习2

声明&#xff0c;定义&#xff0c;以及链接规范 翻译单元 声明与定义 链接规范 C/C 内存布局 可执行映像 程序堆栈 动态分配的堆 对象的内存布局 kilobyte 和 kibibyte 流水线缓存以及优化 未完待续。。。...

#Js篇:js里面递归的理解

定义&#xff1a; 递归是一种编程技术&#xff0c;它是指一个函数在其定义内部调用自身的过程。 特点&#xff1a; 一个问题可以分解为更小的问题用同样的方法解决&#xff1b;分解后的子问题求解方式一样&#xff0c;不同的是数据规模变小&#xff1b;存在递归终止条件 作…...

Qt博客目录

一.Qt安装配置和创建项目 Qt所有版本下载地址 Qt安装配置教程windows版&#xff08;包括&#xff1a;Qt5.8.0版本&#xff0c;Qt5.12&#xff0c;Qt5.14版本下载安装教程&#xff09;&#xff08;亲测可行&#xff09; QT从入门到入土&#xff08;一&#xff09;——Qt5.14.…...

【C++】初识模板:函数模板和类模板

目录 一、模板函数 1、函数模板的概念 2、函数模板的格式 3、函数模板的原理 4、函数模板实例化 5、 模板参数的匹配原则 二、类模板 1 、类模板的定义格式 2 、类模板的实例化 3、模板类示例 一、模板函数 1、函数模板的概念 函数模板代表了一个函数家族&#xff0c…...

记录Dynamo每个节点的运行时间

不知道小伙伴们在写Dynamo程序的时候&#xff0c;有没有遇到这种问题→程序运行很慢&#xff0c;但是却不知道该优化哪些节点&#xff0c;可以提高程序运行的速度。 今天呢&#xff0c;就给大家分享一个节点包→TuneUp&#xff0c;在节点包管理器里就可以下载&#xff0c;安装…...

探索设计模式的魅力:代理模式揭秘-软件世界的“幕后黑手”

设计模式专栏&#xff1a;http://t.csdnimg.cn/U54zu 目录 引言 一、魔法世界 1.1 定义与核心思想 1.2 静态代理 1.3 动态代理 1.4 虚拟代理 1.5 代理模式结构图 1.6 实例展示如何工作&#xff08;场景案例&#xff09; 不使用模式实现 有何问题 使用模式重构示例 二、…...

AD9361多片同步设计方法

本文基于ZC706FMCOMMS5的平台&#xff0c;介绍了多片AD9361同步的方法。并将该设计移植到自行设计的ZYNQ70354片AD9361(实现8路同步收发)的电路板上。本设计采用纯逻辑的方式&#xff0c;仅使用了ZYNQ芯片的PL部分。 9361多芯片同步主要包括基带同步和射频同步两大块任务。其中…...

2024/2/7 图的基础知识

图的存储 B3643 图的存储 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a;mp[n][n]用来存邻接矩阵&#xff0c;二维vector用来存每个点连的点 完整代码&#xff1a; #include <bits/stdc.h> #define int long long const int N 1e5 10; int n, m; …...

1897_野火FreeRTOS教程阅读笔记_链表

1897_野火FreeRTOS教程阅读笔记_链表 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 之前我自己通过直接啃代码的方式对FreeRTOS也算是有了一点理解了&#xff0c;这次趁着些许闲暇翻看一下野火的FreeRTOS教程。一者算是一种复习&#xff1b;二者可能对自…...

CTFshow web(php命令执行 45-49)

基础知识&#xff1a; 1.绕过cat使用&#xff1a; tac more less head tac tail nl od(二进制查看) vi vim sort uniq rev 2.绕过空格用&#xff1a; %09 <> ${IFS} $IFS$ {cat,fl*} %20 注&#xff1a; %09 ##&#xff08;Tab&#xff09; %20 ##&#xff08;spa…...

飞天使-linux操作的一些技巧与知识点8-zabbix6.0 容器搭建

文章目录 安装docker安装步骤mysql下载镜像安装zabbix 使用zabbix非host模式创建 测试效果 安装docker 1. 配置官方 yum 源$ sudo yum install -y yum-utils $ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo2. 安装 Docker$ …...

51 单片机入门 400 例

1 IO输出 点亮1个LED灯方法1 2 IO输出 点亮1个LED灯方法2 3 IO输出 点亮多个LED灯方法1 4 IO输出 点亮多个LED灯方法2 5 闪烁1个LED 6 不同频率闪烁1个LED灯 7 不同频率闪烁多个LED灯…...

贪心算法的应用

考虑最大利润 输入&#xff1a;种类数、需求量、各种类的库存量、各种类的总价 输出&#xff1a;最大利润 #include <iostream> #include <algorithm>//调用sort排序 using namespace std; struct mooncake{double store;double price;double tprice; }cake[1000]…...

CentOS基于volatility2的内存取证实验

CentOS&#xff0c;Redhat和Fedora 都是Red Hat体系&#xff0c;采用yum管理器&#xff0c;不同于Debian、Ubuntu作为Debian体系使用apt 本文以CentOS为例&#xff0c;采用avml制作内存镜像&#xff0c;并利用volatility官方所给工具制作profile符号文件&#xff0c;进行简单的…...

HLS 三角函数报错:undefined reference to ‘cordic_apfixed::circ_table_arctan_128‘

最近在通过HLS实现一些算法&#xff0c;其中用到了hls::cos函数&#xff0c;写完代码编译报错&#xff1a; ../Vitis_HLS/hls_cordic_apfixed.h:229: undefined reference to cordic_apfixed::circ_table_arctan_128 build/xf_computePhaseMap_accel.o: In function void cord…...

【汇编】简单的linux汇编语言程序

一、Linux系统汇编语言 Linux系统上的汇编语言可以使用不同的语法风格&#xff0c;主要包括Intel语法和AT&T语法。这两种语法有各自的特点和风格区别&#xff0c;尽管它们表示的底层机器指令相同。下面分别对两种语法进行简要说明&#xff1a; Intel语法 Intel语法是由I…...

从Siwave导入模型到Q3D仿真,如何避免‘幽灵’solder导致的网络报错?

从Siwave到Q3D的模型迁移&#xff1a;彻底解决"幽灵焊料"引发的网络冲突 当你在Ansys电子设计自动化工具链中切换工作环境时&#xff0c;是否遇到过这样的困扰&#xff1a;从Siwave精心准备的模型导入Q3D后&#xff0c;突然冒出各种莫名其妙的网络重叠报错&#xff…...

数智驱动 人才筑基——拔尖创新人才与卓越工程师培养论坛举行

3月22日&#xff0c;第二届高等院校新工科人才培养暨产教融合发展大会在北京举行。大会以“科技创新 智造未来”为主题&#xff0c;来自全国各地的本科院校、职业院校、行业企业以及媒体等1000余位嘉宾参会。22日下午&#xff0c;数智驱动 人才筑基——拔尖创新人才与卓越工程师…...

Java Web 新冠物资管理系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 新冠疫情的爆发对全球公共卫生体系提出了严峻挑战&#xff0c;物资管理成为疫情防控中的关键环节。传统物资管理方式依赖人工操作&#xff0c;效率低下且易出错&#xff0c;难以应对突发公共卫生事件中的大规模物资调配需求。为解决这一问题&#xff0c;新冠物资管理系统应…...

Wan2.2-I2V-A14B性能调优:基于算法原理的模型推理加速策略

Wan2.2-I2V-A14B性能调优&#xff1a;基于算法原理的模型推理加速策略 1. 效果亮点预览 在RTX4090D显卡上&#xff0c;经过系统调优的Wan2.2-I2V-A14B模型展现出惊人的性能提升&#xff1a;单次推理耗时从原始的38ms降低至22ms&#xff0c;吞吐量提升近72%。更令人惊喜的是&a…...

League Akari:英雄联盟玩家的终极效率工具集,免费提升游戏体验

League Akari&#xff1a;英雄联盟玩家的终极效率工具集&#xff0c;免费提升游戏体验 【免费下载链接】League-Toolkit 兴趣使然的、简单易用的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...

终极PrimeVue Toast组件交互事件回调指南:从基础到高级应用

终极PrimeVue Toast组件交互事件回调指南&#xff1a;从基础到高级应用 【免费下载链接】primevue Next Generation Vue UI Component Library 项目地址: https://gitcode.com/GitHub_Trending/pr/primevue PrimeVue是一款功能强大的Vue UI组件库&#xff0c;其中Toast组…...

Offline-First数据同步策略:解决网络中断的智能方案

Offline-First数据同步策略&#xff1a;解决网络中断的智能方案 【免费下载链接】offline-first :electric_plug: Everything you need to know to create offline-first web apps. 项目地址: https://gitcode.com/gh_mirrors/of/offline-first 在当今移动优先的时代&am…...

OpenClaw自动化周报:Qwen3-32B镜像整合多平台数据

OpenClaw自动化周报&#xff1a;Qwen3-32B镜像整合多平台数据 1. 为什么需要自动化周报 每周五下午&#xff0c;我的日历总会准时弹出提醒&#xff1a;"撰写本周工作总结"。这个看似简单的任务&#xff0c;实际操作起来却异常繁琐&#xff1a;需要登录JIRA查看任务…...

致远OA任意文件上传漏洞的深度利用与防御策略

致远OA文件上传漏洞的攻防全景解析与企业级防护指南 1. 漏洞背景与影响范围 致远OA作为国内广泛使用的协同办公系统&#xff0c;其安全性直接影响数百万企业的数据资产。近年来曝光的任意文件上传漏洞因其高危害性成为攻击者重点利用目标。该漏洞允许攻击者在未授权情况下上传恶…...

RRT*在ROS中的实战:用Gazebo仿真实现动态避障(Python+ROS Noetic)

RRT*在ROS中的实战&#xff1a;用Gazebo仿真实现动态避障&#xff08;PythonROS Noetic&#xff09; 路径规划是机器人自主导航的核心技术之一。在复杂动态环境中&#xff0c;如何快速找到一条安全且优化的路径一直是研究热点。RRT*&#xff08;Rapidly-exploring Random Trees…...