AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3301. 食堂供餐

中等通过率 60% · 提交 727 · 通过 436
二分查找模拟

小慕负责公司食堂的盒饭供应工作。为了彻底消除员工取餐排队时间,食堂的必须足够快。现在需要根据以往员工取餐的统计数据,计算出一个刚好能让排队时间为零的最低供餐速度。也就是说,食堂在每个单位时间内至少需要做出多少份盒饭才能满足需求。

提示:带虚线的词点一下有通俗解释。

输入描述

<p> <span style="white-space-collapse:preserve;">第</span><code style="white-space-collapse:preserve;">1</code><span style="white-space-collapse:preserve;">行为一个正整数</span><code style="white-space-collapse:preserve;">N</code><span style="white-space-collapse:preserve;">,表示食堂开餐时长。</span><code style="white-space-collapse:preserve;">1 <= N <= 1000</code><span style="white-space-collapse:preserve;"> </span><br /> <span style="white-space-collapse:preserve;">第</span><code style="white-space-collapse:preserve;">2</code><span style="white-space-collapse:preserve;">行为一个正整数</span><code style="white-space-collapse:preserve;">M</code><span style="white-space-collapse:preserve;">,表示开餐前食堂已经准备好的盒饭份数。</span><code style="white-space-collapse:preserve;">Pi <= M <= 1000</code><span style="white-space-collapse:preserve;"> </span><br /> <span style="white-space-collapse:preserve;">第</span><code style="white-space-collapse:preserve;">3</code><span style="white-space-collapse:preserve;">行为</span><code style="white-space-collapse:preserve;">N</code><span style="white-space-collapse:preserve;">个正整数,用空格分隔,依次表示开餐时间内按时间顺序每个单位时间进入食堂取餐的人数</span><code style="white-space-collapse:preserve;">Pi</code><span style="white-space-collapse:preserve;"> </span><br /> <code style="white-space-collapse:preserve;">1 <= i <= N</code><span style="white-space-collapse:preserve;">,</span><code style="white-space-collapse:preserve;">0 <= Pi <= 100</code><span style="white-space-collapse:preserve;"> </span> </p> <span data-lark-record-data="{"isCut":false,"rootId":"HrFRdlddJoZ3z5xGct4c5vmdnjg","parentId":"HrFRdlddJoZ3z5xGct4c5vmdnjg","blockIds":[6,7,8,9],"recordIds":["MTgMd68Q7oOPNqxj8xvchBa2nKf","FjeQdkCX2o6Xr5xKmb4cfrSxnXe","QotXdABkjoLsalxOaKYcM8Gvneh","Fm9Ldta7KomY7NxhoepcQKkgnIb"],"recordMap":{"MTgMd68Q7oOPNqxj8xvchBa2nKf":{"id":"MTgMd68Q7oOPNqxj8xvchBa2nKf","snapshot":{"type":"bullet","parent_id":"HrFRdlddJoZ3z5xGct4c5vmdnjg","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"initialAttributedTexts":{"text":{"0":"第1行为一个正整数N,表示食堂开餐时长。1 <= N <= 1000 "},"attribs":{"0":"*0+1*0*1+1*0+7*0*1+1*0+a*0*1+e*0+1"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"align":"","folded":false}},"FjeQdkCX2o6Xr5xKmb4cfrSxnXe":{"id":"FjeQdkCX2o6Xr5xKmb4cfrSxnXe","snapshot":{"type":"bullet","parent_id":"HrFRdlddJoZ3z5xGct4c5vmdnjg","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"apool":{"nextNum":2,"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]}},"initialAttributedTexts":{"attribs":{"0":"*0+1*0*1+1*0+7*0*1+1*0+j*0*1+f"},"text":{"0":"第2行为一个正整数M,表示开餐前食堂已经准备好的盒饭份数。Pi <= M <= 1000"}}},"align":"","folded":false}},"QotXdABkjoLsalxOaKYcM8Gvneh":{"id":"QotXdABkjoLsalxOaKYcM8Gvneh","snapshot":{"type":"bullet","parent_id":"HrFRdlddJoZ3z5xGct4c5vmdnjg","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"apool":{"nextNum":2,"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]}},"initialAttributedTexts":{"attribs":{"0":"*0+1*0*1+1*0+2*0*1+1*0+14*0*1+2"},"text":{"0":"第3行为N个正整数,用空格分隔,依次表示开餐时间内按时间顺序每个单位时间进入食堂取餐的人数Pi"}}},"align":"","folded":false}},"Fm9Ldta7KomY7NxhoepcQKkgnIb":{"id":"Fm9Ldta7KomY7NxhoepcQKkgnIb","snapshot":{"type":"bullet","parent_id":"HrFRdlddJoZ3z5xGct4c5vmdnjg","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":[],"text":{"initialAttributedTexts":{"text":{"0":"1 <= i <= N,0 <= Pi <= 100"},"attribs":{"0":"*0*1+b*0+1*0*1+e"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"align":"","folded":false}},"HrFRdlddJoZ3z5xGct4c5vmdnjg":{"id":"HrFRdlddJoZ3z5xGct4c5vmdnjg","snapshot":{"type":"page","parent_id":"","comments":[],"locked":false,"hidden":false,"author":"7115054903550050305","children":["doxcnCCfQjebA8rq5vJwFbi99cb","doxcnHevQj6qfNfNcvc1ibW3oOf","GiFYdzfKtocQUSxwiHLcr5JFnvl","P8OIdBaGfoDrLyx36ivcPF09nni","MTgMd68Q7oOPNqxj8xvchBa2nKf","FjeQdkCX2o6Xr5xKmb4cfrSxnXe","QotXdABkjoLsalxOaKYcM8Gvneh","Fm9Ldta7KomY7NxhoepcQKkgnIb","Q1zRdqJXoomS8GxI2S3cGl8wnch","Brh1dJFtZohwkYxbEoHcvk5EnRd","BNF0dsmQXow0EdxTzQLcvfVAnNL","Jrv3dcKtKoEIZfx575dcZanqnIY","NIaYd5RfKogXPcxDeRdc3FKEndf","FT7ddvmtZoQuOGxD2u2ciffanSg","QqsRdq4APoMJDVxtlnzcNedInuh","EJaSdvlRkoVU1ZxtL1DcugWPnte","Von2dguiCoAUEsxND2Wc0MgZnmh","RNo3dfQJVo9CC4x8f8LcahwTngh","FShedyxHCo38fQxOriucl41Snkc","RaEXdgx0GoQccnxVaOkc699onhf","VUMHdO8PFowsRdxvtSicsGBbnUg","Cyy2dSZ6bogSZXxzkErca9eCnMb","TUnjdNMCkoXm0nxPQWzc2wsDnrP","PqRYdPBSto1EQsx8sSjcfz5nnMh","NgjndUOIwoBQn1x7FiCcV5m0n5d","doxcncx9kumcZc9hVhSy72r6Mng","doxcnuzkMmhakgOxuEo2CFWLH9e","doxcnLpapE3vpomvyvCeDEiK5Ob","doxcnQLQuDW42Ycgk2p7gf2Kotg","doxcn7cxk7dXcWzMdWQ9eDNfKPd","doxcngaGd8knmWRJMfcCfqV4Vnb","doxcnEcnDZw4dYuKoEzAh9tyMKh","doxcnxWJHN2hm8BS6jLPxN8DHqc","SYcxdz9vpohCAfxetfpcDY8Cn7e","NKrQdaA64oVfTDxoD2Mcavkwnbh","ZabbdftQYofw10xOoJ2cBkU8ntd","doxcnKaEVZftwoEU6WIY4Bfn4mb","doxcnk1FGtmM5qb1OS7ZG62Dvwb","doxcnUnH4iX4B4xFiDypt2uAXTc","doxcnlfboN8TbaCdYBDW52QtPqd","doxcnArhTLoq2MhnOR2cxnHEPNf","doxcnfLtKOBpgVfafIBgUFORd0c","doxcnc0C8mQOpO0skJEhZgcse2d","doxcnKSRu77KG9mnREb7cxnXVA7","K4lvdtylyoA3qyxEwwvcGJi9nbf","doxcnx5GJN0FEydFvJ6JP6O7Cgg","doxcn6X6UeFpieBVF7wQCiHzWBf","doxcnIyHM2LWQt5DjjB5Smdehwc","doxcnBvunrCKQWHOtufSbeDdVig"],"text":{"apool":{"nextNum":2,"numToAttrib":{"0":["author","7115054903550050305"],"1":["abbreviation-data","{\"id\":\"934b5544-6c1e-4cb5-b0b0-94bc4f8b950c\",\"abbr_ids\":\"enterprise_7219181663719276548\",\"is_visible\":1,\"is_first\":1}"]}},"initialAttributedTexts":{"attribs":{"0":"*0+1*1*0+4*0+b"},"text":{"0":"【二分查找】2023B-食堂供餐"}}},"align":"","doc_info":{"editors":["7115054903550050305"],"options":["editors","create_time"],"deleted_editors":[]}}}},"payloadMap":{},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"selection":[{"id":6,"type":"text","selection":{"start":0,"end":35},"recordId":"MTgMd68Q7oOPNqxj8xvchBa2nKf"},{"id":7,"type":"text","selection":{"start":0,"end":44},"recordId":"FjeQdkCX2o6Xr5xKmb4cfrSxnXe"},{"id":8,"type":"text","selection":{"start":0,"end":47},"recordId":"QotXdABkjoLsalxOaKYcM8Gvneh"},{"id":9,"type":"text","selection":{"start":0,"end":26},"recordId":"Fm9Ldta7KomY7NxhoepcQKkgnIb"}],"pasteFlag":"14b31166-f419-41c8-955f-1fde77f5cd32"}" data-lark-record-format="docx/record" class="lark-record-clipboard"></span>

输出描述

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

示例

示例 1

输入

3
14
10 4 5

输出

3

说明:本样例中,总共有3批员工就餐,每批人数分别为10、4、5。 开餐前食堂库存14份。食堂每个单位时间至少要做出3份餐饭才能达成排队时间为0的目标。具体情况如下: 第一个单位时间来的10位员工直接从库存取餐,取餐后库存剩余4份盒饭,加上第一个单位时间做出的3份,库存有7份。 第二个单位时间来的4员工从库存的7份中取4份,取餐后库存剩余3份盒饭,加上第二个单位时间做出的3份,库存有6份。 第三个单位时间来的员工从库存的6份中取5份,库存足够。 如果食堂在单位时间只能做出2份餐饭,则情况如下: 第一个单位时间来的10位员工直接从库存取餐,取餐后库存剩余4份盒饭,加上第一个单位时间做出的2份,库存有6份。 第二个单位时间来的4员工从库存的6份中取4份,取餐后库存剩余2份盒饭,加上第二个单位时间做出的2份,库存有4份。 第三个单位时间来的员工需要取5份,但库存只有4份,库存不够。

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
食堂供餐模拟(示例:速度=3,库存=14) t=0 t=1 t=2 t=3 库存14 库存7 库存6 库存1 取餐10人 取餐4人 取餐5人 +3份 +3份 +3份 每个时间单位:先取餐(消耗库存),再补餐(+速度) 库存始终≥0,排队时间为0 若速度=2,t=3时库存不足(4<5) 库存4 < 取餐5 → 排队时间>0
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「食堂供餐」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。