統計難題 AC自動模板題

2021-06-22 19:52:31 字數 863 閱讀 4778

ac自動機是由kmp演算法和字典數演算法相結合的乙個多模匹配的演算法

該演算法分為兩點:

(1)構造pattern的字典數,求fail指標;

(2)進行模式匹配,與kmp有點類似。

題目鏈結

**:#include#include#include#includeusing namespace std;

const int nmax=1001000;

char text[nmax];

char word[55];

struct node

}*q[500001];//構造字典樹的樹據結構,q為佇列,求fail指標要用。

int head,tail;

void creat(char *str,node *root)

else

}p->cnt++;

}//生成字典樹

void ac_auto(node * root)

p=p->fail;

}if(p==null) temp->next[i]->fail=root;

}q[head++]=temp->next[i];}}

}//求fail指標

int query(node *root)

i++;

}return cnt;

}//匹配,返回存在單詞個數

int main()

{ int t;

scanf("%d",&t);

while(t--)

{node *root=new node();

int n;

head=tail=0;

scanf("%d",&n);

for(int i=0;i

AC自動機模板題

5分鐘打乙個,還是手太生。嘛這個東西單獨搞是沒有難度的 與其他演算法結合起來才是 黑上加黑 光速逃 願意的話可以看看徐大佬的部落格 include define maxn 1000005 using namespace std int n,len,u,ch maxn 29 tot,fail maxn...

統計難題(字典樹模板題)

ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 這個題意還是很好理解的,輸入方面稍微有一點點坑,但是習慣就好 判斷讀入的是不是一串空得字串,可以用gets 函式去實現,可以通過讀入的字...

AC自動機之模板題

hdu 2222 可以先看ac自動機入門教程 題意 輸入幾個字串,乙個文字串,查詢文字串 現過幾個字串 理解 很基礎的板子題,直接套板子就可以匹配了 include include include include include include include include using names...