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

P3300. 农场施肥

中等通过率 56% · 提交 354 · 通过 199
二分查找数学模拟

小慕负责管理一片果园, 表示不同果林的面积,单位:m²。现在需要在 n 天之内给所有果林施完肥,否则会影响收成。 小慕每次选择一片果林进行施肥,且一片果林施肥完成后当天不再进行施肥作业。 假设施肥机的,单位:m²/day,请问才能确保不影响收成?如果无法完成施肥任务,则返回 -1。

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

输入描述

<div data-page-id="Xjexdl4CuoDEY8xZyZccJv5KnHh" data-docx-has-block-data="false"> <div style="white-space-collapse:preserve;" class="ace-line ace-line old-record-id-Tawudvt1Vo8daYx6b3zclGKbnxh"> 第一行输入为 <code>m</code> 和 <code>n</code>,<code>m</code> 表示 <code>fields</code> 中的元素个数,<code>n</code> 表示施肥任务必须在 <code>n</code> 天内 (含 <code>n</code> 天) 完成 第二行输入为 <code>fields</code>,<code>fields[i]</code>表示果林 <code>i</code> 的面积,单位: <code>m^2</code> </div> </div> <span data-lark-record-data="{"rootId":"Xjexdl4CuoDEY8xZyZccJv5KnHh","text":{"initialAttributedTexts":{"text":{"0":"第一行输入为 m 和 n,m 表示 fields 中的元素个数,n 表示施肥任务必须在 n 天内 (含 n 天) 完成\n 第二行输入为 fields,fields[i]表示果林 i 的面积,单位: m^2"},"attribs":{"0":"*0+7*0*1+1*0+3*0*1+1*0+1*0*1+1*0+4*0*1+6*0+8*0*1+1*0+b*0*1+1*0+7*0*1+1*0|1+7*0+7*0*1+6*0+1*0*1+9*0+5*0*1+1*0+9*0*1+3"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"type":"text","referenceRecordMap":{},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":7,"type":"text","selection":{"start":0,"end":101},"recordId":"Tawudvt1Vo8daYx6b3zclGKbnxh"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text" class="lark-record-clipboard"></span>

输出描述

<div data-page-id="Xjexdl4CuoDEY8xZyZccJv5KnHh" data-docx-has-block-data="false"> <div style="white-space-collapse:preserve;" class="ace-line ace-line old-record-id-BeEedNaGOo7z5wx7kQGcb63fnNY"> 对于每组数据,输出最小施肥机的能效 <code>k</code>,无多余空格。 </div> </div> <span data-lark-record-data="{"rootId":"Xjexdl4CuoDEY8xZyZccJv5KnHh","text":{"initialAttributedTexts":{"text":{"0":"对于每组数据,输出最小施肥机的能效 k,无多余空格。"},"attribs":{"0":"*0+i*0*1+1*0+7"}},"apool":{"numToAttrib":{"0":["author","7115054903550050305"],"1":["inlineCode","true"]},"nextNum":2}},"type":"text","referenceRecordMap":{},"extra":{"mention_page_title":{},"external_mention_url":{}},"isKeepQuoteContainer":false,"isFromCode":false,"selection":[{"id":9,"type":"text","selection":{"start":0,"end":26},"recordId":"BeEedNaGOo7z5wx7kQGcb63fnNY"}],"payloadMap":{},"isCut":false}" data-lark-record-format="docx/text" class="lark-record-clipboard"></span>

示例

示例 1

输入

5 7
5 7 9 15 10

输出

9

说明:当能效 k 为 9 时,fields[0]需要 1 天,fields[1]需要 1 天,fields[2]需要 1 天,fields[3]需要 2 天,fields[4]需要 2 天,共需要 7 天,不会影响收成。

示例 2

输入

3 1
2 3 4

输出

-1

说明:由于一天最多完成一片果林的施肥,无论 k 为多少都至少需要 3 天才能完成施肥,因此返回-1。

示例 3

输入

3 4
2 2 1

输出

2

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

看不懂题目?点开图解
二分查找:求最小能效 k示例:fields = [5,7,9,15,10], n=7果林0:5果林1:7果林2:9果林3:15果林4:10k=9时,每天最多施肥9m²第1天施果林0:5m²第2天施果林1:7m²第3天施果林2:9m²第4天施果林3:9m²(剩6)第5天施果林3:6m²(完)第6天:施果林4:9m²(剩1)第7天:施果林4:1m²(完)总天数=7 ≤ n=7,可行二分查找找最小可行k
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「农场施肥」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。