字尾自動機 重複旋律 5(求所有本質不同的子串)

2021-08-08 23:11:40 字數 493 閱讀 8706

字尾自動機二 重複旋律五

本題要求我們求出乙個字串s中本質不同的子串個數。

顯然,答案就是所有狀態上的子串個數之和,這裡說的乙個狀態上的子串個數,是longest-shortest+1。主要需要學習的是,字尾自動機的o(n)構建方法。需要了解的是,乙個狀態u的shortest=fail.longest+1。

#include 

using

namespace

std;

const

int mxn = 2000100;

namespace suffixauttomaton

}else fail[t]=1,mini[t]=1;

return t;

}}using

namespace suffixauttomaton;

int n;

char s[mxn];

int main()

hiho 1445 字尾自動機二 重複旋律5

博主鏈結 給乙個字串,輸出這個串的不同子串數量 直接拿串跑字尾自動機就可以,然後每個狀態點子串的數量等於len i len link i 把所有的狀態點的子串數量加起來就是不同子串數 include include define maxc 28 using namespace std const i...

hihocoder 字尾自動機四 重複旋律6

題目 對於 k in 1,n 求出長度為 k 的子串出現次數最多的出現了多少次 我直到現在才理解字尾自動機上的子樹和是什麼意思 非常顯然的一點是 endpos link u endpos u 考慮到 link u 有多個兒子 於是還需要 endpos 的另外乙個性質 endpos u endpos ...

hihocoder 字尾自動機四 重複旋律7

題目 在 dag 上跑乙個 dp 就好了 設 ans i 表示到了 sam 的 i 位置上所有的子串形成的數的和,之後我們順便記錄乙個方案數 d i 之後我們直接轉移就好了 ans v ans u times 10 w u,v times d u d v d u 答案是 sum ans i incl...