ac自動機 矩陣乘法

2021-06-19 16:29:41 字數 843 閱讀 4279

#include #include #include #include #include #include #include #include #define mod 100000

#define ll long long //poj2778 ac自動機、矩陣乘法(構建矩陣--關鍵)

using namespace std;

int k;

struct node //定義靜態字典樹

fail=-1;

isword=0;

}}a[110];

int check(char c)

int newnode()

void insert(char *p) //建樹

else

else

temp=a[temp].fail;

}if(temp==-1) //到根節點也找不到對應的next

}q.push(a[s].next[t]);}}

}return ;

}struct matrix

}matrix operator*(matrix a1) //過載可以減少記憶體,但速度會慢點

return q;

}

int main()

acautomation();

p.init();

for(j=0; j}

matrix result=f(n); //矩陣快速冪

ll ans;

for(t=0, ans=0; tprintf("%i64d\n", ans%mod);

return 0;

}

bzoj2553 禁忌 AC自動機 矩陣乘法

題目敘述比較煩。一句話,在字母只有前alphabet時,給定n個串,求長度為len的串包含這些n個串的個數最大值的期望值。觀察資料發現串的總長度 75,所以想到ac自動機 而len大小為10 9級別,就知道肯定是在ac自動機上的矩陣乘法,這樣大致的框架就好了。如果令a k x y 表示經過k步從狀態...

AC自動機 建立nlogn個AC自動機

string set queries 題意 給你3種操作,1 加入乙個串到集合中。2 刪除集合中的某乙個串 3 查詢集合中的字串在給定的字串種出現幾次。同乙個串可重複 解法 建立多個ac自動機,用二進位制分組來處理。加入給你21個串 分為 16 4 1,再新增乙個串的時候,即21 1,22 16 4...

AC自動機及字尾自動機

ac自動機是一種基於trie樹的演算法,其本質和kmp上的處理很相似。trie樹結構 kmp轉移思路 ac自動機組要由三個部分組成 trie樹的建立 fail指標的匹配 對ac自動機的詢問 每次建立自動機會有一次初始化 ac自動機類 struct node node結構體 struct ac voi...