ac自動機模版

2021-08-09 19:00:38 字數 760 閱讀 5472

字尾陣列

#include

#include

#include

using

namespace

std;

const

int maxn=200000+100;

int wa[maxn], wb[maxn], wv[maxn], ws[maxn];

int rank[maxn], height[maxn];

int sa[maxn], r[maxn];

char str[maxn];

int cmp(int* r, int a, int b, int l)

//將原串利用ascii碼複製到r陣列中,r[len]=0;

//m是原串中ascii碼最大值加一,合理設值,會影響通排序的基數

//複雜度 nlogn

//n+1

//sa 是從1...n 然後sa是字串下表 從0~~n

//rank 是0...n,val 從1~~ rank[0]=2 代表suffix(0)在所有字尾中排第二名

void da(int* r, int* sa, int n, int m)

}//n

//複雜度:nlogn

//height 陣列下表是1...len

void calheight(int* r, int* sa, int n)

int main()

return

0;}

模版 AC自動機

模版 ac自動機 可以在文字串中查詢多個模式串。前置知識點 kmp 演算法 trie 樹 開了乙個 fai l i fail i fail i 陣列 存的是 tri etrie trie 樹上的結點號 表示 tri etrie trie 樹 某個結點 在 文字串上 第 tri e i j trie ...

演算法模版 AC自動機

板子不再贅述,oi wiki有詳細講解。query 函式則是遍歷文字串的所有位置,在文字串的每個位置都沿著 fail 跳到根,將沿途所有元素答案 意義在於累計所有以當前字元為結尾的所有模式串的答案。看 就能很容易的理解。另外 e i 記錄的是第 t 個模式串結尾是哪個節點 所有節點均有唯一的編號 貼...

模版 AC自動機(簡單版)

這是一道簡單的ac自動機模版題。用於檢測正確性以及演算法常數。為了防止卡oj,在保證正確的基礎上只有兩組資料,請不要惡意提交。給定n個模式串和1個文字串,求有多少個模式串在文字串裡出現過。輸入格式 第一行乙個n,表示模式串個數 下面n行每行乙個模式串 下面一行乙個文字串。輸出格式 乙個數表示答案 輸...