字尾自動機模板

2021-08-28 16:33:05 字數 878 閱讀 5291

#include

#include

#define maxc 28

using namespace std;

const

int maxn =

1e6+5;

const

int mod =

1e9+7;

typedef

long

long ll;

int len[maxn *2]

,//最長子串的長度(該節點字串數量=len[x]-len[link[x]])

link[maxn *2]

,//字尾鏈結(最短串前部減少乙個字元所到達的狀態)

cnt[maxn *2]

,//被字尾連線的數

nex[maxn *2]

[maxc]

,//狀態轉移(尾部加乙個字元的下乙個狀態)(圖)

idx,

//節點編號

last;

//最後節點

ll epos[maxn *2]

;// enpos數(該狀態子串出現數量)

char str[maxn]

;ll a[maxn]

;//長度為i的子串出現最大次數

void

iint()

//sam建圖

void

extend

(int c)

} last = x;

//更新最後處理的節點

}void

getnpos()

}void

getsubnum()

void

getsubmax()

intmain()

模板 字尾自動機

求子串的出現次數。用類似拓撲排序的思想,從沒有出度的節點開始把他的cnt加在他的字尾連線上。include using namespace std typedef long long ll struct node void copynewnode const int l,const node n c...

模板 字尾陣列 字尾自動機

關於字尾自動機sam,貼乙個非常好的講解 字尾自動機學習小記 交洛谷模板可a 傳送門 洛谷 模板 字尾排序 include using namespace std const int n 1e6 5 char s n int sa n t1 n t2 n c n int n,m 555 void s...

字尾自動機模板(初步)

看了幾天居然連字尾自動機的構造原理和性質都沒完全搞懂。更不用說應用了。在這裡膜一下先輩clj大神 的ppt 大神的世界就是不懂。另外還要膜一下國家集訓隊的幾篇 作者,表示還沒看懂orz 先貼乙個講得通俗易懂的字尾自動機學習 蒟蒻的我居然仍然沒看懂 講得也夠詳細。學習 苦逼的我 乙個下午就死記硬背了這...