关于线段树合并维护 sam 中 endpos
  • 板块学术版
  • 楼主CloudWings
  • 当前回复9
  • 已保存回复9
  • 发布时间2024/10/22 16:57
  • 上次更新2024/10/22 19:14:58
查看原帖
关于线段树合并维护 sam 中 endpos
569316
CloudWings楼主2024/10/22 16:57

具体问题是:

在维护 endpos 集合的时候,我们同时想知道相邻元素差的最大值。


一个应该错误的思路是:

线段树合并维护的时候,记录每个线段树节点的最小值/最大值,合并的时候用两边的答案和右儿子的最小值-左儿子的最大值来更新。

我认为这是错的,因为在 sam 上,一个等价类的所有子儿子的 endpos 集合的确不相交,但是每个 endpos 的最小值/最大值构成的区间是有交的。


更暴力的做法应该可以 set + 启发式合并,每次插入元素就更新这个差的最大值。

这样应该是两只 log\log 的。


追问:如果线段树真的不能维护这个最大值的话,那么是否有比双 log\log 更优的做法?

2024/10/22 16:57
加载中...