给定一个包含 n 个整数值段的向量,我正在寻找一个 O(n log n) 算法来计算包含大多数其他段的段。事实上,我只对这些段的数量感兴趣。
我尝试了段树和区间树的变体,但没有一个相关的。我遇到的真正问题来自偏序。如果顺序是全部的,那么通过直接计算包含树来解决问题会容易得多。
例子 :a = [4;11] b = [2;7] c = [5;8] d = [6;7] e = [3;9] f = [1;10] g = [10;42]
这里我们有包含 ecb 的 f 和最大的 d。当然,g 要长得多,但不包含任何其他段,所以这不是最大段的问题。
我们可以显示顺序图(不显示传递弧):
f -----> b ---> d
\-->e--->c-/
a-/
g
对我来说主要的问题是我不能排除一段时间处理段,因为在某些时候可能会出现不包含在 f 中的子段并构成最大的段。