【AC自动机】【bzoj3940】Censoring
来源:互联网 发布:linux 虚拟化 多台 编辑:程序博客网 时间:2024/06/05 14:27
- 题意:
给一些模板串和一个长串,删除长串中所有模板串,输出剩下的串;
做法:
对模式串维护AC自动机,对长串维护一个栈,边压栈边匹配,匹配到了就弹掉。代码:
#include <iostream>#include <cstdio>#include <cstring>#include <queue>#define MAXN 100001using namespace std;namespace AC{ struct node{ node *ch[26],*nxt; int maxx; node(){memset(ch,0,sizeof ch);nxt=NULL;maxx=0;} void* operator new (size_t){ static node pool[MAXN],*C=pool; return C++; } }*root; void insert (char *s){ node *p=root;int i; for(i=1;s[i];i++){ if(!p->ch[s[i]-'a']) p->ch[s[i]-'a']=new node; p=p->ch[s[i]-'a']; } p->maxx=max(p->maxx,i-1); } queue<node*> q; void build(){ for(int i=0;i<26;i++) if(root->ch[i]) root->ch[i]->nxt=root,q.push(root->ch[i]); else root->ch[i]=root; while(!q.empty()){ node *u=q.front();q.pop(); for(int i=0;i<26;i++) if(u->ch[i]){ u->ch[i]->nxt=u->nxt->ch[i]; q.push(u->ch[i]); u->ch[i]->maxx=max(u->ch[i]->maxx,u->ch[i]->nxt->maxx); } else u->ch[i]=u->nxt->ch[i]; } }}char sta[MAXN];char s[MAXN],t[MAXN];AC::node *a[MAXN];int main(){ scanf("%s",s+1); int n; scanf("%d",&n); AC::root=new AC::node(); a[0]=AC::root; for(int i=1;i<=n;i++){ scanf("%s",t+1); AC::insert(t); } AC::build(); int top=0; for(int i=1;s[i];i++){ sta[++top]=s[i]; a[top]=a[top-1]->ch[s[i]-'a']; if(a[top]->maxx) top-=a[top]->maxx; } sta[top+1]=0; puts(sta+1); return 0;}
0 0
- 【AC自动机】【bzoj3940】Censoring
- 【BZOJ3940】【Usaco2015 Feb】Censoring AC自动机
- 【bzoj3940】[Usaco2015 Feb]Censoring AC自动机
- 【BZOJ3940】[Usaco2015 Feb]Censoring【AC自动机 / KMP】
- bzoj3940[Usaco2015 Feb]Censoring AC自动机
- [BZOJ3940][Usaco2015 Feb]Censoring(AC自动机+栈)
- bzoj3940 Censoring
- BZOJ 3940 Usaco2015 Feb Censoring AC自动机
- 【BZOJ3942】[Usaco2015 Feb]Censoring【AC自动机 / KMP】
- 【BZOJ 3940】[Usaco2015 Feb]Censoring AC自动机
- BZOJ 3940: [Usaco2015 Feb]Censoring AC自动机
- bzoj 3940: [Usaco2015 Feb]Censoring AC自动机
- [BZOJ]3940: [Usaco2015 Feb]Censoring AC自动机
- AC自动机-洛谷3121 [USACO15FEB]审查(黄金)Censoring (Gold)
- AC自动机——Luogu3121 [USACO15FEB]审查(黄金)Censoring (Gold)
- AC自动机...
- AC自动机
- AC 自动机
- 字符串 相等问题
- 蓝以中老师《高等代数》第04章:线性空间与线性变换 笔记
- 内核中_init,_exit中的作用
- 关于js表格datatable插件的使用心得
- 尾递归 or for循环?
- 【AC自动机】【bzoj3940】Censoring
- 冒泡排序--对指定的区间序列排序
- Egret游戏引擎视频教程
- 如何解决Myelipse导入项目乱码
- 博客服务器【WordPress】
- 线程进程
- 行级标签和组合标签
- hdu1042 N!_大数
- Fiddler对iphone应用进行抓包