给定N个区间[a,b]成本c的列表,找到2个非重叠区间的最小总和。我在O(n ^ 2)(pastebin.com/kveAZTwv)中有一个算法,但我找不到O(N log N)。
第一个值是间隔数。其他行是:a,b,c其中a是间隔的开头,b是结束,c是成本。
示例:
input :
3
0 10 1
1 2 2
9 12 2
output :
4
答案 0 :(得分:0)
以下是O(n log n)中算法的基本思想,我相信它可以更有效地完成:
1)对符合其终点的所有间隔进行排序,每个终点都是一个潜在的分裂点,其中右边的间隔和左边的间隔不重叠
2)现在扫描已排序的间隔,并为每个spiltpoint记住左边的最小成本间隔。
3)根据开始点对所有元素进行排序
4)对于每个分裂点,另外记住右边的最小成本间隔(在分裂点之后具有其起始点)。从排序元素的后面到前面进行单次扫描也可以实现这一点
5)为每个分割点添加两个相应的成本并寻找最小值。
抱歉,由于我在移动设备上,这有点不正式。