論文中的解法是離線插入 \(O(\log n)\) 詢問 \(O(\log n)\) 的,不過我發現有一種離線插入 \(O(1)\) 詢問 \(O(\log n)\) 的方法。
首先我們離線處理,將兩個串連在一起。我們以 \(ababa\) 和 \(aba\) 爲例:
比如現在我們要詢問 \(A\) 串 \([1,4]\) 和 \(B\) 串 \([1,2]\)
我們先在 \(rnk[7]\) 開始倍增,使得 \([l,r]\) 中 \(height>=2\)
然後我們在這個區間中找多少 \(1\leq sa[i]\leq 3\)。爲什麼是 \(3\) 呢?因爲 \(3-4-len_b+1\)。顯然答案爲 \(2\)
詢問就是主席樹上區間加,詢問是 \(O(\log n)\) 的,插入是 \(O(1)\) 的。