判断 answer=1{\tt answer} = 1answer=1 时不要用 Hash,用 SA 的 LCP 去判,这样单次是 O(1)O(1)O(1) 的,而非 Hash + 逆元的大常。(这十分重要,实测可以将第二个点从 847ms 减到 186ms,对代码常熟提升巨大)
提前预处理 [1,n][1,n][1,n] 的因数,这样子 O(N)O(\sqrt{N})O(N) 查询时就跑不满了。
注意你查 answer=2{\tt answer} = 2answer=2 时把求出最短 AA 串的数组存下来,不要放到线段树上 O(logn)O(\log n)O(logn) 的去查。
SA 数组处理的常数优化。