二分问题求助

mirrror1986 2010-08-12 05:38:17
一个长为N的数列划分为M段,要求每段数之和的最大值最小
如数组 10 1 12 4 3 分成3分

则划分为 10 1 | 12 | 4 3
...全文
68 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
michael122 2010-08-12
  • 打赏
  • 举报
回复
不错,应该是效率最高的
就是用二分法求这个最大值,每次二分出来的值去验证一下是否满足可以分为小于等于m段,验证的时间是线性的,整体的复杂度也基本是线性的

[Quote=引用 1 楼 litaoye 的回复:]

二分这个最大值,每次结果都验证一下,能否被分为<= m段。
[/Quote]
绿色夹克衫 2010-08-12
  • 打赏
  • 举报
回复
以LZ的例子来看(10 1 12 4 3),我先猜这个最大值是100,发现1段就可以都分下了,100 > 10 + 1 + 12 + 4 + 3。

然后我猜最大值为50,=> m' = 1
猜13, => m' = 3
并且13 - 1也分为3堆,

猜7,永远分不下
猜10,永远分不下
猜11,永远分不下
猜12,OK了

是这个意思,其实还可以简单一些,不说了。
mirrror1986 2010-08-12
  • 打赏
  • 举报
回复
能详细的点吗,有点不太明白
绿色夹克衫 2010-08-12
  • 打赏
  • 举报
回复
二分这个最大值,每次结果都验证一下,能否被分为<= m段。

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧