P3796 模板 AC自動機(加強版)

2022-05-02 04:42:07 字數 1044 閱讀 6685

此題是在簡單版的ac自動機基礎上完成,直接附上**

ac**:

#includeusing

namespace

std;

typedef

long

long

ll;const

int maxn=1e6+5

;string

t[maxn],s[maxn];

struct

tree

dfa[maxn]; //

字典樹int cnt=0

;struct

result

ans[maxn];

//記錄單詞出現次數

bool

cmp(result a,result b)

void clean(int

x)void build(string s,int

num)

now=dfa[now].son[s[i]-'

a']; //

向下構造

} dfa[now].num=num;//

標記單詞的結尾

}void get_fail() //

構造fail指標

}while(!q.empty())

else

//如果不存在這個節點}}

}void query(strings)}

intmain()

dfa[

0].fail=0; //

結束標誌

get_fail();//

求出失配指標

cin>>s[0]; //

文字串 query(s[0

]); sort(ans+1,ans+n+1

,cmp);

printf(

"%d\n

",ans[1

].times);

cout

<< s[ans[1].pos]

}return0;

}

洛谷P3796 模板 AC自動機(加強版)

題目描述 有個由小寫字母組成的模式串以及乙個文字串。每個模式串可能會在文字串中出現多次。你需要找出哪些模式串在文字串中出現的次數最多。輸入輸出格式 輸入格式 輸入含多組資料。每組資料的第一行為乙個正整數,表示共有個模式串,接下去行,每行乙個長度小於等於的模式串。下一行是乙個長度小於等於的文字串。輸入...

洛谷P3796 模板 AC自動機(加強版)

有 nn 個由小寫字母組成的模式串以及乙個文字串 tt 每個模式串可能會在文字串 現多次。你需要找出哪些模式串在文字串 tt 現的次數最多。輸入格式 輸入含多組資料。每組資料的第一行為乙個正整數 nn 表示共有 nn 個模式串,1 leq n leq 1501 n 150 接下去 nn 行,每行乙個...

洛谷 P3796 模板 AC自動機(加強版)

題目描述 有 nn 個由小寫字母組成的模式串以及乙個文字串 tt。每個模式串可能會在文字串 現多次。你需要找出哪些模式串在文字串 tt 現的次數最多。輸入格式 輸入含多組資料。保證輸入資料不超過 5050 組。每組資料的第一行為乙個正整數 nn,表示共有 nn 個模式串,1 leq n leq 15...