ac自動機模板
模板:
//fail指標的含義:((最長的(當前字串的字尾))
//fail指標:i->fail==j
//word[j]是word[i]的最長字尾
1const
int maxn=26;2
struct
trie314
15void init()//
初始化
1620
void insert(char s)//
構造樹trie
2130 end[now]++;31}
3233
void build()//
構造失敗指標
3445
while(!q.empty())
4657
58} 59}
6061
void query(char buf)//
查詢 6277}
78 printf("
%d\n
",sum);79}
80 };
【統計目標串中模式串的個數】
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10
#define ll long long
11using
namespace
std;
12
const
int maxn=128
;//模板部分
13struct
trie
1425
26void init()//
初始化
2731
void insert(char s,int id)//
構造樹trie
3241 end[now]=id;//
記錄單詞的id42}
4344
void build()//
構造失敗指標
4556
while(!q.empty())
5768
69} 70}
7172
73bool vis[510
];74
bool query(char buf,int n,int id)//
查詢 75
91 temp =fail[temp];92}
93}94if(!flag)return
false
;95 printf("
web %d:
",id);
96for(int i = 1;i <= n;i++)
97if
(vis[i])
98 printf("%d"
,i);
99 printf("\n"
);100
return
true
;101
}102
};103
char str1[205
]; 104
char str2[10010
];105
trie ac;
106int
main()
107117
ac.build();
118int ans = 0
;119 scanf("
%d",&m);
120for(int i = 1;i <= m;i++)
121126 printf("
total: %d\n
",ans);
127}
128return0;
129 }
【思路:和病毒侵襲 hdu - 2896 這題差不多,只是多了乙個計數。】
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #include10
11using
namespace
std;
12#define int long long
13const
int maxn=128;14
15char str1[1010][100
]; 16
char str2[2000005
];17
18char str[1003][66
];19
char sss[2000100
];20
struct
trie
3132
void init()//
初始化
3337
void insert(char s,int id)//
構造樹trie
3847 end[now]=id;//
記錄單詞的id48}
4950
void build()//
構造失敗指標
5162
while(!q.empty())
6374
75} 76}
7778
79int vis[1666];//
記錄出現的次數
80void query(char buf,int n)//
查詢 81
97 temp =fail[temp];98}
99}100if
(flag )
105}
106}
107return
;108
109110
}111
}ac;
112113
signed main()
123ac.build();
124 scanf("%s"
,sss);
125ac.query(sss,n);
126}
127return0;
128 }
AC自動機模板
ac自動機模板 ac自動機模板 使用方法 1 init 初始化函式 2 insert str 插入字串函式 3 build 構建ac自動機 4 query str 返回出現的字串個數 使用需注意事項 1 注意輸入的字元的範圍,需對next和其二維大小及相關引數進行更改 2 注意next fail和e...
AC自動機模板
ac自動機主要是用於多模式串的匹配問題,按照我的理解,ac自動機就是在tire樹上實現kmp演算法,由於ac自動機加入了失敗指標,所以可以把他看成乙個狀態轉移的圖。給出模板 include include include include includeusing namespace std cons...
模板 AC自動機
我覺得ac自動機的難點和核心是構建失敗指標,父親的失敗指標的兒子 son2 中有和兒子 son1 相同的,即為son1的失敗指標 例 還是有個不懂的地方 第90行,跪求大佬賜教 include include include include include include include inclu...