华为OD机试题【食堂供餐】【2023 B卷 100分】

news/2024/11/23 9:27:24/

在这里插入图片描述

文章目录

  • 🎯 前言
  • 🎯 题目描述
  • 🎯 解题思路
    • 📙 Python代码实现
    • 📗 Java代码实现
    • 📘 C语言代码实现


🎯 前言

🏆 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机试真题最新试题。

🏆 华为机试有三道题,第一道和第二道属于简单题,分值为100分,第三道为困难题,分值为200分,总分400分,150分钟考试时间。

🏆 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!

🎯 题目描述

某公司员工食堂以盒饭的方式供餐。
为将员工取餐排队时间降为0,食堂的供餐速度必须要足够快。
现在需要根据以往员工取餐的统计信息,计算出一个刚好能达到排队时间为0的最低供餐速度;
即,食堂在每个单位时间内必须至少做出多少份盒饭才能满足要求。

输入描述:
第一行为一个正整数N,表示食堂开餐时长;
第二行为一个正整数M,表示开餐前食堂已经准备好的盒饭数量;
第三行为N个正整数,用空格分割,依次表示开餐时间内按时间顺序每个单位时间进入食堂取餐的人数。

输出描述:
一个整数,能满足题目要求的最低供餐速度。(每个单位时间需要做出多少份盒饭)。

🎯 解题思路

题目要求根据员工取餐的统计信息计算能够达到排队时间为0的最低供餐速度,即食堂每个单位时间内最少要做出多少份盒饭。可以参考以下思路实现:

  1. 首先,输入食堂的开餐时长和开餐前准备好的盒饭数量。
  2. 然后,按照时间顺序输入每个单位时间内进入食堂取餐的人数。
  3. 我们可以使用二分查找来找到能够达到排队时间为0的最低供餐速度,即每个单位时间内最少要做出多少份盒饭。
  4. 对于每个可能的供餐速度,我们可以模拟食堂供餐的过程,计算出每个单位时间结束后排在队列中的员工数量。如果排在队列中的员工数量等于0,说明该供餐速度能够达到排队时间为0。
  5. 最后,根据比较结果调整二分查找的上界和下界,直到得到最低供餐速度。

输入:
3
14
10 4 5

输出:
3

📙 Python代码实现

# 模拟供餐的过程
def simulate(m, nums, speed):n = len(nums)m -= nums[0]for i in range(1, n):m += speedif m >= nums[i]:m -= nums[i]else:return Falsereturn True# 二分查找最低供餐速度
def binary_search(m, nums, left, right):while left < right:mid = (left + right) // 2if simulate(m, nums, mid):right = midelse:left = mid + 1return left# 输入开餐时长和开餐前准备好的盒饭数量
n = int(input())
m = int(input())# 输入每个单位时间内进入食堂取餐的人数
nums = list(map(int, input().split()))# 二分查找最低供餐速度
left, right = 1, max(nums)
speed = binary_search(m, nums, left, right)# 输出结果
print(speed)

📗 Java代码实现

import java.util.*;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int m = scanner.nextInt();int[] nums = new int[n];for (int i = 0; i < n; i++) {nums[i] = scanner.nextInt();}// 二分查找最低供餐速度int left = 1, right = Arrays.stream(nums).max().getAsInt() + m;while (left < right) {int mid = (left + right) / 2;if (simulate(m, nums, mid)) {right = mid;} else {left = mid + 1;}}// 输出结果System.out.println(left);}// 模拟供餐的过程private static boolean simulate(int m, int[] nums, int speed) {int n = nums.length;m -= nums[0];for (int i = 0; i < n; i++) {m += speed;if (m >= nums[i]) {m -= nums[i];} else {return false;}}return true;}
}

📘 C语言代码实现

# include
# include# define MAXN 1000// 模拟供餐的过程
int simulate(int m, int nums[], int n, int speed) {int idx = 0;m -= nums[0]for (int i = 0; i < n; i++) {m += speed;if (m >= nums[i]) {m -= nums[i];} else {return 0;}}return 1;
}int main() {int n, m;scanf("%d%d", & n, & m);int nums[MAXN];for (int i = 0; i < n; i++) {scanf("%d", & nums[i]);}// 二分查找最低供餐速度int left = 1, right = nums[0] + m;while (left < right) {int mid = (left + right) / 2;if (simulate(m, nums, n, mid)) {right = mid;} else {left = mid + 1;}}// 输出结果printf("%d\n", left);return 0;
}

在这里插入图片描述

📭 本专栏包含了最新最全的2023年 华为OD机试真题,有详细的分析和解答。


http://www.ppmy.cn/news/235205.html

相关文章

良田高拍仪接口文档对接

前端直接对接高拍仪api文档 <template><!-- 高拍仪视频预览区 --><div id="view"><img id="view1" src="http://127.0.0.1:38088/video=stream&camidx=0" alt="主摄像头"><img id="view2" …

高拍仪、浏览器获取获取多摄像头,切换摄像头

前段时候接到一个需求&#xff0c;新增功能&#xff1a;根据当前电脑绑定了几个摄像头&#xff0c;获取相应摄像头列表&#xff0c; 并选择摄像头拍摄。 翻阅网上的各种资料&#xff0c;没有找到方法&#xff0c;最后借鉴了H5页面转换前后摄像头的方法&#xff0c;记录如下。 …

捷宇高拍仪

框架是vuespringboot 先去找捷宇售后要到他们的对接资料,会有他们的插件,不同的设备型号,插件会不一样,捷宇只适合windows系统,至于国产机我没问不知道他们有没有对接方案。插件安装后,去注册表搜索454C18E2-8B7D-43C6-8C17-B1825B49D7DE要能搜索到才行 vue代码&#xff08;注…

前端使用(久派)高拍仪进行拍照上传

采用的技术为HTML5cssJavaScriptbootstrapjQuery 开始前需要将高拍仪的服务器&#xff08;驱动&#xff09;安装好 里面包含SDK 地址&#xff1a;WebCameraServerV2.61 Setup(1).exe文件大小&#xff1a;90.4 M|https://wwa.lanzoui.com/ise7ivhf5be接口文档&#xff1a;开发…

vue3 web项目引入高拍仪

一、安装高拍仪SDK&#xff1f; 1. SDK下载路径 Eloam SDK 在线对接平台 - Windows SDK 文档 2.安装sdk&#xff0c;注意不要安装在C盘&#xff0c;安装时最好把360啥的关了&#xff0c;要不然可能会安装不上。(只有window系统的电脑有SDK&#xff0c;没有mac版本的) 二、原理…

c++ 二次开发 良田高拍仪_高拍仪进行二次开发要求

二次开发&#xff0c;简单的说就是在现有的软件上进行定制修改&#xff0c;功能的扩展&#xff0c;然后达到自己想要的功能&#xff0c;一般来说都不会改变原有系统的内核。那么高拍仪二次开发要怎样进行呢&#xff1f;下面河南高拍仪的小编为大家讲一下 高拍仪二次开发基本要求…

云桌面摄像头(高拍仪)重定向问题说明

传统的摄像头重定向模式&#xff1a; 在云桌面的使用场景&#xff0c;通常会遇到USB摄像头不能用的问题。如下图所示&#xff0c;插在云终端或者瘦客户机上的USB摄像头&#xff0c;通过网络重定向到远端的虚拟机中使用。 传统的USB摄像头重定向应用模式 摄像头重定向模式的重…

web高拍仪图片上传

公司引进高拍仪&#xff0c;想拍完照片点上传按钮直接上传图片。高拍仪接口能提供照片的本地路径&#xff0c;现在的问题是不用file控件选择&#xff0c;只有路径&#xff0c;不知道如何上传到服务器&#xff0c;求解决方案。 方法&#xff1a; 使用泽优Web图片上传控件&#…