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

这篇具有很好参考价值的文章主要介绍了华为OD机试题【食堂供餐】【2023 B卷 100分】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


🎯 前言

🏆 《华为机试真题》专栏含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 += speed
        if m >= nums[i]:
            m -= nums[i]
        else:
            return False
    return True


# 二分查找最低供餐速度
def binary_search(m, nums, left, right):
    while left < right:
        mid = (left + right) // 2
        if simulate(m, nums, mid):
            right = mid
        else:
            left = mid + 1
    return 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;
}

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

📭 本专栏包含了最新最全的2023年 华为OD机试真题,有详细的分析和解答。文章来源地址https://www.toymoban.com/news/detail-473055.html

到了这里,关于华为OD机试题【食堂供餐】【2023 B卷 100分】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 华为OD机试 - 最少数量线段覆盖| 机试题算法思路 【2023】

    华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 - 自动曝光(Python) | 机试题算法

    2023年04月25日
    浏览(35)
  • 华为od机试题-2023-最新真题-完整题库-两周350分

    华为OD机试题库每半年刷新一次,目前已经整理了100道原题,并提供了java、python、C++三种解法,这就是2024年的完整题库了。 华为OD机试2周350分,高效复习策略: 1、牛客网刷基础算法题,每个算法都了解一下,用一周时间:牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内

    2024年02月11日
    浏览(28)
  • 华为OD机试 -矩阵扩散(Java) | 机试题+算法思路+考点+代码解析 【2023】

    存在一个mn的二维数组,其成员取值范围为0或1。其中值为1的成员具备扩散性,每经过1S,将上下左右值为0的成员同化为1。二维数组的成员初始值都为0,将第[i,j]和[k,l]两个个位置上元素修改成1后,求矩阵的所有元素变为1需要多长时间。 输入描述: 输出数据中的前2个数字表

    2024年02月16日
    浏览(46)
  • 华为OD机试 - 五键键盘(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】

    有一个特殊的五键键盘 上面有 A 、 Ctrl-C 、 Ctrl-X 、 Ctrl-V 、 Ctrl-A A 键在屏幕上输出一个字母 A Ctrl-C 将当前所选的字母复制到剪贴板 Ctrl-X 将当前选择的字母复制到剪贴板并清空所选择的字母 Ctrl-V 将当前剪贴板的字母输出到屏幕 Ctrl-A 选择当前屏幕中所有字母 注意: 剪贴板

    2024年02月09日
    浏览(32)
  • 【华为OD机试】比赛【2023 B卷|100分】

    【 华为OD机试】-真题 !!点这里!! 【 华为OD机试】真题考点分类 !!点这里  !! 题目描述 一个有N个选手参加比赛,选手编号为1~N(3=N=100),有M(3=M=10)个评委对选手进行打分。 打分规则为每个评委对选手打分,最高分10分,最低分1分。 请计算得分最多的3位选手的编号。

    2024年02月15日
    浏览(27)
  • 华为OD机试 -矩阵最大值(Java) | 机试题+算法思路+考点+代码解析 【2023】

    给定一个仅包含0和1的N*N二维矩阵,请计算二维矩阵的最大值,计算规则如下: 1、 每行元素按下标顺序组成一个二进制数(下标越大越排在低位),二进制数的值就是该行的值。矩阵各行值之和为矩阵的值。 2、允许通过向左或向右整体循环移动每行元素来改变各元素在行中

    2024年02月13日
    浏览(45)
  • 【华为OD机试】玩牌高手【2023 B卷|100分】

    【 华为OD机试】-真题 !!点这里!! 【 华为OD机试】真题考点分类 !!点这里  !! 题目描述 给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。 选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。 选择规则如下: 1、在每轮里选手可以选择获

    2024年02月08日
    浏览(63)
  • 华为OD机试 - 机器人走迷宫(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】

    房间有 X*Y 的方格组成,例如下图为 6*4 的大小。每一个放个以坐标 (x,y) 描述。 机器人固定从方格 (0,0) 出发,只能向东或者向北前进, 出口固定为房间的最东北角,如下图的方格 (5,3) 。 用例保证机器人可以从入口走到出口。 房间有些方格是墙壁,如 (4,1) ,机器人不能经过那

    2023年04月12日
    浏览(28)
  • 【华为OD机试】连续字母长度【2023 B卷|100分】

    【 华为OD机试】-真题 !!点这里!! 【 华为OD机试】真题考点分类 !!点这里  !! 题目描述 给定一个字符串,只包含大写字母,求在包含同一个字母的子串中, 长度第k长的子串的长度,相同字母只取最长的那个子串。 若子串中只包含同一个字母的子串数小于k,则输出-1. 输入

    2024年02月09日
    浏览(27)
  • 【华为OD机试】选修课【2023 B卷|100分】

     【 华为OD机试】-真题 !!点这里!! 【 华为OD机试】真题考点分类 !!点这里  !! 题目描述 现有两门选修课,每门选修课都有一部分学生选修,每个学生都有选修课的成绩, 需要你找出同时选修了两门选修课的学生,先按照班级进行划分,班级编号小的先输出, 每个班级按照

    2024年02月08日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包