字尾自動機二 重複旋律五
本題要求我們求出乙個字串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...