这与圆弧图形背后的思想相关(但不是图形本身,因为您从间隔开始,不关心它们的圆弧图形表示)。
假设这就是它的含义,那么域可以用类似于圆的度数的周期来表示。然后你有一个最小可能值min
和一个最大可能值max = min + 1 * period
,第一件事情是找到最小的s
,使得start = min + s + k * period
对于整数k
(基本上,这是一个模操作),同样地,你找到最小的e
,使得end = min + e + j * period
。
(s,e)
,其中s > e
。将其分成两个区间(s,max)
和(min,e)
,将它们放入区间树中,并为它们都提供对原始区间(start,end)
的引用。如果你开始有可能重叠一个时间段的n
个区间,则最终在树中会有2n
个区间,并且渐近界限保持不变。
(start, end)
且start > end
,则存储(end, start, R)
,其中 R 表示该区间已被反转。然后,您可以使用普通的区间树,并从R
中知道给定结果的起始和结束已被反转。 - Dan D.