后缀自动机和广义后缀自动机的一些疑问

(1 min to read)

感觉sam,特别是parent树上的复杂度很玄学?!

  • 暴力跳parent树的复杂度是多少?第一种情况是建广义sam,然后每个串暴力跳parent标记,复杂度似乎是$n\sqrt n$​(维护多串的根号trick)第二种是sam上直接无脑暴力跳到某个长度范围内,一般情况是要写倍增的,但是我在2019徐州L、p4094上直接暴力跳也都过了,而且比倍增快(常数小)。。如果是aaaaa…的话parent树是链,应该能卡,所以还是要写倍增吧

  • trie上建广义sam正解是bfs的做法,但是需要显示的建出trie,如果不建会错,我认为是重边的影响(不确定)。如果直接dfs,复杂度会取决于trie上$\sum dep(leaf)$(15国家论文),感觉可以卡成$n^2$,然而我在2019徐州L、2019wfG上直接dfs建就过了,由于不用建trie,时间和空间上都挺优秀,目前还不知道是数据问题还是什么。p3346由于叶子只有20个,所以dfs肯定是对的。

  • 广义sam能不能基数排序突然意识到广义sam基数排序后的结果与拓扑序可能有出入,不过我好几道exsam用基数排序得到的拓扑序去做也过了。。很迷还是老老实实把parent树建出来吧。

  • 注意:线段树合并求endpos集合的时候,一定要新开点,否则可能会影响子树的信息。