【luogu2292】[HNOI2004]L语言

xiaoxiao2021-02-28  111

题目:

我是超链接

题解:

挺暴力的AC自动机......

f[i]表示从 0 - i 可以涵盖单词

代码:

#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; int m,n,ch[205][30],tot=0,f[1000001]; char st[1000001]; bool is_end[1000001]; void cl() { scanf("%s",st); int l=strlen(st); int now=0; for (int i=0;i<l;i++) { int x=st[i]-'a'; if (!ch[now][x]) ch[now][x]=++tot; now=ch[now][x]; } is_end[now]=true; } void ac(int m,int v) { int ans=0; f[0]=v; for (int i=0;i<=m;i++) { if (f[i]!=v) continue; int now=0; for (int j=i+1;j<=m;j++) { int x=st[j]-'a'; if (!ch[now][x]) break; now=ch[now][x]; if (is_end[now]) ans=max(ans,j),f[j]=v; } } printf("%d\n",ans); } int main() { int i; scanf("%d%d",&n,&m); for (i=1;i<=n;i++) cl(); for (i=1;i<=m;i++) { scanf("%s",st+1); ac(strlen(st+1),i); } }

转载请注明原文地址: https://www.6miu.com/read-40820.html

最新回复(0)