gpt4 book ai didi

c++ - 选择一组具有最高值总和的区间的算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:05 24 4
gpt4 key购买 nike

如何以尽可能有效的方式(可能是线性复杂度)解决以下问题?

作为输入,我有一些间隔(开始、结束)来保存它的值(整数)。没有固定的间隔数。我想找到不重叠的一组间隔,并且它们的值之和是尽可能高的(因此间隔数与结果值无关紧要)。

我正在考虑将其实现为带有评估边的图形,并可能使用 Djikstra 或类似的东西。但问题是插入到图表中,这会花费太多时间。我怎样才能让它变得更好(或者可能是图形的有效实现)?

最佳答案

这个问题被称为加权间隔调度。

想法是按区间的右端对区间进行排序,然后使用动态规划找到在特定区间内或之前结束的最重子集的权重。您可以使用二进制搜索来有效地找到可以在当前间隔之前选择的最合适的间隔。时间复杂度为 O(N log N)

您可以在这里阅读更多相关信息:https://courses.cs.washington.edu/courses/cse521/13wi/slides/06dp-sched.pdf .

关于c++ - 选择一组具有最高值总和的区间的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40849238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com