【二分答案】收入计划

这篇博客介绍了一种利用二分搜索算法解决如何在有限次领取工资的机会下,确保领取工资的最大值最小的问题。题目背景是高考后的工作计划,要求在N天的工作中,恰好领取M次工资,并最大化最小那次工资。博客提供了输入输出格式和样例,并解释了二分搜索在解决此类最大值最小问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【问题描述】

  高考结束后,同学们大都找到了一份临时工作,渴望挣得一些零用钱。从今天起,Matrix67将连续工作N天。每一天末他可以领取当天及前面若干天里没有领取的工资,但他总共只有M次领取工资的机会。Matrix67已经知道了在接下来的这N天里每一天他可以赚多少钱。为了避免自己滥用零花钱,他希望知道如何安排领取工资的时间才能使得领到工资最多的那一次工资数额最小。

  注意:Matrix67必须恰好领工资M次,且需要将所有的工资全部领走(即最后一天末需要领一次工资)。

【输入格式】

  第一行输入两个用空格隔开的正整数N和M。
  以下N行每行一个不超过10000正整数,依次表示每一天的薪水。

【输出格式】

  输出领取到的工资的最大值最小是多少。

【输入样例】

7 5
100
400
300
100
500
101
400

【输出样例】

500

【数据范围】

1<=N<=100000
1 <=M<=N

【样例解释】

采取下面的方案可以使每次领到的工资不会多于500。这个答案不能再少了。
100 400 300 100 500 101 400 每一天的薪水
<——1 <——-2 <—3 <—4 <—5 领取工资的次数
500   400   500 101 400 领取到的工资

题目大意:给你一段序列A,要求你在该序列中找出m个互不重叠且包含完A中所有元素的连续子序列使得各连续子序列的最大值最小。
算法:二分答案(最大值最小问题)。
典型的最大值最小问题,所以想到二分答案,在区间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值