华为OD机试真题 JavaScript 实现【食堂供餐】【2023 B卷 考生抽中题】,附详细解题思路

news/2024/11/7 22:37:18/

在这里插入图片描述

一、题目描述

某公司员工食堂以盒饭的方式供餐。

为将员工取餐排队时间降为0,食堂的供餐速度必须要足够快。

现在需要根据以往员工取餐的统计信息,计算出一个刚好能达到排队时间为0的最低供餐速度。

即,食堂在每个单位时间内必须至少做出多少份盒饭才能满足要求。

二、输入描述

第一行输入一个正整数N,表示食堂开餐时长。

第二行为一个正整数M,表示开餐前食堂已经准备好的盒饭数量;

第三行为N个正整数,用空格分割,依次表示开餐时间内按时间顺序每个单位时间进入食堂取餐的人数。

三、输出描述

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

四、补充说明

每人只能取一份盒饭。

需要满足排队时间为0,必须保证取餐员工到达食堂时,食堂库存盒饭数量不少于本次来取餐的人数。

第一个单位时间来取餐的员工只能取开餐前食堂准备好的盒饭。

每个单位时间里制作的盒饭只能供给后续单位时间来的取餐员工。食堂在每个单位时间里制作的盒饭数量是相同的。

五、解题思路

  1. 采用二分法;
  2. left为最小出餐速度,right为最大出餐速度 = 总人数 - 已经准备好的盒饭数量;
  3. 判断是否还剩余盒饭;
  4. 如果盒饭不够了,返回false;
  5. 如果盒饭足够,则剩余盒饭数量 = 目前盒饭数量 - 每个时间段的取餐人数,再加上当前时间段生产的盒饭数量;

六、JavaScript算法源码

/*** @param N 食堂开餐时长* @param M 开餐前食堂已经准备好的盒饭数量* @param input 每个单位时间进入食堂取餐的人数*/
function calculate(N, M, input) {const P = input.split(" ");// 最小出餐速度let left = 0;// 最大出餐速度 = 总人数 - 已经准备好的盒饭数量let right = P.reduce((sum, val) => sum + val, 0) - M;while (left < right) {// 二分法const mid = Math.floor((left + right) / 2);// 是否还有剩余盒饭if (check(mid, M, N, P)) {right = mid;} else {left = mid + 1;}}return left;
}/*** 是否还有剩余盒饭* @param speed* @param M 已经准备好的盒饭数量* @param N 食堂开餐时长* @param P 每个单位时间进入食堂取餐的人数* @return*/
function check(speed, M, N, P) {let remaining = M;for (let i = 0; i < N; i++) {// 剩余盒饭数量 = 目前盒饭数量 - 每个时间段的取餐人数remaining -= P[i];// 如果盒饭不够了,返回falseif (remaining < 0) {return false;}remaining += speed;}return true;
}

七、效果展示

1、输入

3
20
15 12 8

2、输出

8

3、说明

开产前食堂库存20份。

第一个单位时间段,有15人来取餐,取餐后剩余5份,加上第一个单位时间做出来的8份,还剩13份;

第二个单位时间段,有12人来取餐,取餐后剩余1份,加上第二个单位时间做出来的8分,还剩9份;

第三个单位时间段,有8人来取餐,盒饭数量还剩9个,足够了。

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述


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

相关文章

Vue3 + TS + Vite —— 大屏可视化 项目实战

前期回顾 Vue3 Ts Vite pnpm 项目中集成 —— eslint 、prettier、stylelint、husky、commitizen_彩色之外的博客-CSDN博客搭建VIte Ts Vue3项目并集成eslint 、prettier、stylelint、huskyhttps://blog.csdn.net/m0_57904695/article/details/129950163?spm1001.2014…

冥想第八百一十八天

1.明天就该回来了&#xff0c;今天晚上跑了7公里。 2.晚上休息的不好&#xff0c;因为要回家。 3.一周忙起来还是特别快的。 4.感谢父母&#xff0c;感谢朋友&#xff0c;感谢家人&#xff0c;感谢不断进步的自己。

联想拯救者14实现快捷键调屏幕亮度

前言 我的EFI制作完成后&#xff0c;快捷键调节声音大小的功能默认就支持&#xff0c;但是快捷键调整亮度就不支持了。 快捷键调节亮度这样的需求对我来话基本是可有可无。因为鼠标简单点点就可以调节亮度了。Big Sur调节亮度真的方便&#xff0c;鼠标点两下就搞定啦。 点击状…

2022款联想拯救者R7000P和联想小新Pro16 选哪个好

022款联想拯救者R7000P和小新Pro16在配置方面&#xff0c;虽然都是一样的处理器、显卡、内存、硬盘&#xff0c;但是2022款联想拯救者R7000P在处理器性能释放更高&#xff0c;达到了80w性能释放。 屏幕对比&#xff1a; 在屏幕方面&#xff0c;联想拯救者R7000P的屏幕尺寸是15.…

联想拯救者r7000搜索不到wifi?

小编用的是联想拯救者r7000笔记本电脑&#xff0c;最近频繁出现搜索不到wifi的情况&#xff0c;在网上查询发现不少用户都出现了同样的情况&#xff0c;那么一起来看看下面的解决办法吧&#xff01; 方法1)更新无线网卡驱动&#xff1a;在联想官网即可下载驱动列表 &#xff0c…

华为ER3208G3 端口映射

华为ER3208G3 端口映射记录 进入网络设置 > NAT配置 注意&#xff1a;外部地址选择想要映射的公网的wan口&#xff0c;内部地址填想要映射到内网的ip地址 ER3208G3路由的映射除了以上的配置外&#xff0c;还需要在高级配置中开启NAT hairpin功能&#xff0c;否则端口映射…

RTX3060显卡的bug

最近小编在帮别人调代码的时候遇到一个难缠的问题&#xff01;&#xff01;就是在RTX3060显卡中跑pytorch的代码&#xff0c;好家伙&#xff0c;第一次弄这么个问题弄这么久。 在配置高端显卡的cuda版本的时候一定要看好手册办事&#xff0c;RTX3060目前支持CUDA11及以上&#…

华为ensp ar201接口怎么配地址

华为ensp AR201路由器的Ethernet0/0/0接口默认在二层接口模式&#xff0c;不能直接在接口上配置 IP地址&#xff0c;需要将默认的二层接口改为三层接口&#xff0c;可正常进行IP地址。 a.实验时&#xff0c;用华为ensp模拟器工具配置AR201系列路由器&#xff0c;进入到Etherne…