华为OD刷题C卷 - 每日刷题 29(机器人仓库搬砖,爱吃蟠桃的孙悟空)

1、(机器人仓库搬砖):

这段代码是解决“机器人仓库搬砖”的问题。它提供了一个Java类Main,其中包含main方法和getMinEnergy方法,用于计算机器人每小时充能的最小能量格数,以确保在8小时内搬完所有砖块。

main方法首先读取输入的砖块数量数组,然后调用getMinEnergy方法并打印出所需的最小能量格数。

getMinEnergy方法首先检查仓库数量是否大于8,如果是,则无法完成任务并返回-1。接着,使用二分查找算法来确定每小时所需的最小能量格数。二分查找通过不断缩小搜索范围,逼近每小时最少需要充的能量格数,直到找到满足条件的最小值。

2、(爱吃蟠桃的孙悟空):

这段代码是解决“爱吃蟠桃的孙悟空”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算孙悟空在H小时内吃完所有桃子的最小速度K。

main方法首先读取每颗桃树上的桃子数量数组和守卫离开的时间H,然后调用getResult方法并打印出孙悟空的最小吃桃速度。

getResult方法使用二分查找算法来确定孙悟空的最小吃桃速度。通过遍历桃树数组并计算在当前速度下吃完所有桃子所需的时间,逐步逼近并找到满足条件的最小速度。

package OD353;import java.util.Arrays;
import java.util.Scanner;/*** @description 机器人仓库搬砖* @level 5* @score 100* @type 二分法*/
/*** 题目描述* 机器人搬砖,一共有 N 堆砖存放在 N 个不同的仓库中,第 i 堆砖中有 bricks[i] 块砖头,要求在 8 小时内搬完。* <p>* 机器人每小时能搬砖的数量取决于有多少能量格,机器人一个小时中只能在一个仓库中搬砖,机器人的能量格只在这一个小时有效,为使得机器人损耗最小化,应尽量减小每次补充的能量格数。* <p>* 为了保障在 8 小时内能完成搬砖任务,请计算每小时给机器人充能的最小能量格数。* <p>* 无需考虑机器人补充能力格的耗时;* 无需考虑机器人搬砖的耗时;* 机器人每小时补充能量格只在这一个小时中有效;* 输入描述* 第一行为一行数字,空格分隔* <p>* 输出描述* 机器人每小时最少需要充的能量格,若无法完成任务,输出 -1*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//输入一行数字,空格分隔int[] bricks = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();//8小时内完成,每小时最少补充的能量System.out.println(getMinEnergy(bricks));}//每小时最少补充的能量public static int getMinEnergy(int[] bricks) {//如果仓库数量大于8,不可能完成任务if (bricks.length > 8) {return -1;}//仓库砖的最大值int max = Arrays.stream(bricks).max().orElse(0);//因为每小时只能在一个仓库,如果仓库数量=8,则必须满足仓库中的最大值,才能完成任务if (bricks.length == 8) {return max;}//仓库小于8个,用二分法逐渐逼近最小的能量补充,且补充max时一定能在8小时内完成int min = 1;int ans = max;while (min <= max) {int mid = (min + max) / 2;//已花费的小时数int cost = 0;for (int brick : bricks) {cost += brick / mid + (brick % mid > 0 ? 1 : 0);}//如果花费<=8小时,则说明当前mid可以满足,但不一定是最优解if (cost <= 8) {ans = Math.min(ans, mid);max = mid - 1;} else {//大于等于8,则说明当前补充的能量无法满足min = mid + 1;}}return ans;}}
package OD354;import java.util.Arrays;
import java.util.Scanner;/*** @description 爱吃蟠桃的孙悟空* @level 5* @score 200*//*** 题目描述* 孙悟空爱吃蟠桃,有一天趁着蟠桃园守卫不在来偷吃。已知蟠桃园有 N 棵桃树,每颗树上都有桃子,守卫将在 H 小时后回来。* <p>* 孙悟空可以决定他吃蟠桃的速度K(个/小时),每个小时选一颗桃树,并从树上吃掉 K 个,如果树上的桃子少于 K 个,则全部吃掉,并且这一小时剩余的时间里不再吃桃。* <p>* 孙悟空喜欢慢慢吃,但又想在守卫回来前吃完桃子。* <p>* 请返回孙悟空可以在 H 小时内吃掉所有桃子的最小速度 K(K为整数)。如果以任何速度都吃不完所有桃子,则返回0。* <p>* 输入描述* 第一行输入为 N 个数字,N 表示桃树的数量,这 N 个数字表示每颗桃树上蟠桃的数量。* <p>* 第二行输入为一个数字,表示守卫离开的时间 H。* <p>* 其中数字通过空格分割,N、H为正整数,每颗树上都有蟠桃,且 0 < N < 10000,0 < H < 10000。* <p>* 输出描述* 吃掉所有蟠桃的最小速度 K,无解或输入异常时输出 0。*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//第一行为每颗桃树上的桃子的数量int[] peach = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();//H小时内吃完int h = sc.nextInt();System.out.println(getResult(peach, h));}//返回孙悟空能在h小时内吃完所有桃子的最小速度public static int getResult(int[] peach, int h) {int n = peach.length;//一个小时最多吃一棵树,多出的时间不能用if (n > h) {//一定吃不完return 0;}//桃树果子最大值int max = Arrays.stream(peach).max().orElse(0);//如果刚好数量与h相同,则只能按最大值的速度吃if (n == h) {return max;}//h>n 时,用二分法逐渐逼近最小值int min = 1;//记录结果int ans = max;while (min <= max) {int mid = (min + max) / 2;//花费的小时数int cost = 0;for (int i : peach) {cost += i / mid + (i % mid > 0 ? 1 : 0);}//如果cost<h 则更新,但不一定是最小值if (cost <= h) {ans = Math.min(ans, mid);//往左逼近max = mid - 1;} else {//吃不完 往右逼近min = mid + 1;}}return ans;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26967.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++14 新特性:std::make_unique 和 constexpr

今天介绍的 std::unique_ptr 和 constexpr的用法比较简单&#xff0c;所以放到一篇文章中进行介绍。 1、std::make_unique 首先来看 std::unique_ptr&#xff0c;在 C11 中引入了智能指针和std::unique_ptr&#xff0c;为资源管理提供了更安全、更简洁的手段。但是 C11 缺少了…

STM32无法烧写程序的故障排除

如果你在使用STM32微控制器时遇到无法烧写程序的问题&#xff0c;可以按以下步骤进行故障排除&#xff1a; 1. 确认硬件连接 检查电源&#xff1a;确保STM32板子正确供电。调试器连接&#xff1a;确认ST-LINK调试器或其他编程工具与STM32开发板的连接无误&#xff0c;尤其是S…

jQuery如何实现一个轮播图左右翻页的功能

当使用jQuery来实现一个轮播图左右翻页的功能时&#xff0c;你可以遵循以下步骤&#xff1a; HTML结构&#xff1a;首先&#xff0c;你需要创建一个HTML结构来包含轮播图的图片。 <div class"carousel"> <div class"carousel-images"> <…

利用python爬虫采集苹果公司各产品销售收入统计报告

数据为2013年到2022年苹果公司各产品&#xff08;iPhone、iPad、Mac等&#xff09;及服务的销售收入。iPhone是苹果公司销售收入最高的产品。 数据统计单位为&#xff1a;亿美元 。 数据说明&#xff1a; 数据整理自苹果公司历年10-K文件&#xff0c;每年10-K文件可能对之前年…

DP:两个数组的dp问题

解决两个数组的dp问题的常用状态表示&#xff1a; 1、选取第一个字符串[0-i]区间以及第二个字符串[0,j]区间作为研究对象 2、根据题目的要求确定状态表示 字符串dp的常见技巧 1、空串是有研究意义的&#xff0c;引入空串可以帮助我们思考虚拟的边界如何进行初始化。 2、如…

【odoo】odoo常用的ORM方法

概要 在Odoo中&#xff0c;ORM&#xff08;对象关系映射&#xff0c;Object-Relational Mapping&#xff09;方法是一种将Python对象映射到数据库表的方法。Odoo的ORM系统使开发者能够使用高级的Python代码而不是复杂的SQL语句来操作数据库。Odoo的ORM方法主要用于创建、读取、…

c#数组的使用

前言 我们在开发c#程序的过程中经常需要使用数组&#xff0c;这个数组就是用来存储多个值的一种数据类型。 1、一维数组 1.1 一维数组的声明 int[] array1;//数组的声明 1.2 一维数组的赋值 int[] array2 new int[] { 1, 2, 3, 3 };//数组的赋值 int[] array3 new int[…

云服务器Ubuntu系统的vim-plus(youcompleteme)完整安装

一. 安装vim-plus PS&#xff1a;需要在那个用户下配置vim-plus&#xff0c;就到那个用户下执行代码 git clone https://github.com/chxuan/vimplus.git ~/.vimplus cd ~/.vimplus ./install.sh二. 解决没有代码自动补全的问题 随便创建一个Test.cpp文件&#xff0c;vim打开…

图像生成新篇章:Stable Diffusion 3 Medium开源评析

摘要 在数字艺术与人工智能的交汇点上&#xff0c;Stable Diffusion 3&#xff08;SD3&#xff09;的开源无疑是一场技术革新的盛宴。就在3月份&#xff0c;我撰写了一篇博文&#xff0c;深入探讨了SD3的技术报告内容与介绍&#xff0c;文章发表在CSDN博客上&#xff0c;https:…

如何用多媒体沙盘实现智能交互体验?

随着多媒体技术在内容展示领域的迅猛进步&#xff0c;智能化信息交互方式已然跃升为公众瞩目的焦点&#xff0c;而展厅作为信息传递与产品展示的核心阵地&#xff0c;正面临着提升交互体验、强化信息传递效果的迫切需求。因此&#xff0c;以多媒体沙盘、LED屏幕等创新装置为媒介…

C/C++图形渲染引擎开发方向有钱景吗?

在当前的技术环境下&#xff0c;特别是在图形渲染引擎开发领域&#xff0c;的确存在一些挑战和变化。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频 讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给个评论222&#xff0c;私…

Python和OpenCV图像分块之图像边长缩小比率是2

import cv2 import numpy as npimg cv2.imread("F:\\mytupian\\xihuduanqiao.jpg") # 低反光 cv2.imshow(image, img) # # 图像分块 # dst np.zeros(img.shape, img.dtype) ratio 2 #图像边长缩小比率是2&#xff0c;也就是一张图片被分割成四份 height, wi…

证照之星是一款很受欢迎的证件照制作软件

证照之星是一款很受欢迎的证件照制作软件&#xff0c;证照之星可以为用户提供“照片旋转、裁切、调色、背景处理”等功能&#xff0c;满足用户对证件照制作的基本需求。本站证照之星下载专题为大家提供了证照之星电脑版、安卓版、个人免费版等多个版本客户端资源&#xff0c;此…

AI图书推荐:用ChatGPT按需DIY定制来赚钱

《用ChatGPT按需DIY定制来赚钱》ChatGPT Print Money Method &#xff0c;作者是Cindy Donovan 。 下面是图书概要&#xff1a; ### 第一章&#xff1a;什么是按需印刷以及ChatGPT如何使其变得简单易行&#xff1f; 本章介绍了按需印刷的商业模式&#xff0c;即仅在收到订单时…

SpringMVC-基础架构

一、什么是MVC 二、什么是SpringMVC 三、SpringMVC的特点 四、配置SpringMVC 简单流程&#xff1a; 总体框架 1.创建pom.xml依赖 <!--打包方式--><packaging>war</packaging><!--依赖--><dependencies><dependency><groupId>org.s…

使用GPT/文心实现诗词作画

在教育领域中&#xff0c;古诗词一直是培养学生文化素养和审美能力的重要载体。选择合适的古诗词进行学习和欣赏&#xff0c;不仅能够增强他们的语言表达能力&#xff0c;还能促进他们对中国传统文化的理解和热爱。本文将结合AI技术&#xff0c;将古诗词转换为图画。 1、选择适…

602. 好友申请 II :谁有最多的好友

602. 好友申请 II &#xff1a;谁有最多的好友 题目链接&#xff1a;602. 好友申请 II &#xff1a;谁有最多的好友 代码如下&#xff1a; # Write your MySQL query statement below select ids as id,count(*) as num from (select requester_id as idsfrom RequestAccepte…

IT人的拖延——别让“需求沟通”耽误了你的正事

IT人的工作&#xff0c;很多“需求沟通”的场景&#xff0c;而在沟通需求时&#xff0c;又会因为沟通的不顺畅&#xff0c;没有结果而产生烦躁的情绪或者是悬而未决的不能开始行动&#xff0c;进而间接地造成了拖延。这种拖延的原因&#xff0c;需要从需求沟通的根源来找方案&a…

【云岚到家】-day03-2-门户缓存实现实战

【云岚到家】-day03-2-门户缓存实现实战 5 缓存实现5.2 定时任务更新缓存5.2.1 分布式调度平台5.2.1.1 jdk提供的Timer定时器5.2.1.2 使用第三方Quartz方式5.2.1.3 使用分布式调度平台XXL-JOB 5.2.2 XXL-JOB5.2.2.1 介绍5.2.2.2 部署调度中心5.2.2.3 执行器 5.2.2 定义缓存更新…

yolov10 学习笔记

目录 推理代码&#xff0c;source可以是文件名&#xff0c;路径&#xff0c; 预测可视化&#xff1a; 训练自己的数据集&#xff0c; 训练一段时间报错&#xff1a;dill 解决方法&#xff1a; 推理代码&#xff0c;source可以是文件名&#xff0c;路径&#xff0c; 保存结…