博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LOJ6583 ICPC World Finals 2019何以伊名始(广义后缀自动机)
阅读量:4548 次
发布时间:2019-06-08

本文共 1675 字,大约阅读时间需要 5 分钟。

  对trie建SAM,询问串倒过来跑到的节点的|right|即为答案。

#include
using namespace std;#define ll long long#define inf 1000000010#define N 2000010char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<'0'||c>'9')) c=getchar();return c;}int gcd(int n,int m){return m==0?n:gcd(m,n%m);}int read(){ int x=0,f=1;char c=getchar(); while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();} while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f;}int n,m,trie[N][26],son[N][26],fail[N],len[N],size[N],tmp[N],id[N],q[N],cnt=1;char s[N];int ins(int c,int p){ int x=++cnt;len[x]=len[p]+1;size[x]=1; while (!son[p][c]&&p) son[p][c]=x,p=fail[p]; if (!p) fail[x]=1; else { int q=son[p][c]; if (len[p]+1==len[q]) fail[x]=q; else { int y=++cnt; len[y]=len[p]+1; memcpy(son[y],son[q],sizeof(son[q])); fail[y]=fail[q],fail[x]=fail[q]=y; while (son[p][c]==q) son[p][c]=y,p=fail[p]; } } return x;}int run(char *s){ int n=strlen(s+1); int k=1;for (int i=n;i>=1;i--) k=son[k][s[i]-'A']; return k;}signed main(){#ifndef ONLINE_JUDGE freopen("a.in","r",stdin); freopen("a.out","w",stdout);#endif n=read(),m=read(); for (int i=1;i<=n;i++) { char c=getc();int x=read(); trie[x][c-'A']=i; } int head=0,tail=1;q[1]=0;id[0]=1; do { int x=q[++head]; for (int i=0;i<26;i++) if (trie[x][i]) { q[++tail]=trie[x][i]; id[q[tail]]=ins(i,id[x]); } }while (head
=2;i--) size[fail[q[i]]]+=size[q[i]]; while (m--) { scanf("%s",s+1); printf("%d\n",size[run(s)]); } return 0; //NOTICE LONG LONG!!!!!}

  

转载于:https://www.cnblogs.com/Gloid/p/10831991.html

你可能感兴趣的文章
Linux环境变量总结 转
查看>>
正则表达式限制文本框只能输入数字,小数点,英文字母,汉字
查看>>
一个改变this指向bind的函数,vue源代码
查看>>
浅谈redux 中间件的原理
查看>>
01背包问题-动态规划算法
查看>>
我要成为前端工程师!给 JavaScript 新手的建议与学习资源整理
查看>>
ubuntu android
查看>>
一个叫<NameValuePair>的东西~~~
查看>>
ssh三大框架实现(一)---登陆功能
查看>>
Java设计模式之工厂设计模式
查看>>
The Number of Inversions(逆序数)
查看>>
转发帖子链[CodeForces-522A]
查看>>
n个灯,k个人的开灯问题
查看>>
android studio 问题1
查看>>
oracle查重和oracle分页
查看>>
Javascript库
查看>>
几个基本算法
查看>>
Windows 7 (x64) 系统下安装与配置 Windows Live Writer 2012 16.4.3528.0331 图文详细教程
查看>>
关于利用ajax时,设置访问延时的方法
查看>>
jQuery如何获取动态添加的元素
查看>>