简单的AC自动机;

 #include<cstdio>
#include<cstring>
#include<queue>
#define maxn 150005
using namespace std; struct node
{
int cnt;
int id;
node *a[],*tail;
}no[maxn];
int nonocount;
node *newnode()
{
node *p=no+nonocount++;
p->cnt=;
p->id=-;
memset(p->a,NULL,sizeof p->a);
p->tail=NULL;
return p;
} void build(node *root,char *s,int x)
{
int l=strlen(s);
for(int i=;i<l;i++)
{
int k=s[i]-'a';
if(root->a[k]==NULL)
root->a[k]=newnode();
root=root->a[k];
}
root->cnt++;
root->id=x;
} void gettail(node *root)
{
queue<node*>q;
q.push(root);
while(!q.empty())
{
node *fa=q.front();
q.pop();
for(int i=;i<;i++)
if(fa->a[i]!=NULL)
{
node *tmp=fa->tail;
while(tmp&&!tmp->a[i])tmp=tmp->tail;
if(!tmp)fa->a[i]->tail=root;
else fa->a[i]->tail=tmp->a[i];
q.push(fa->a[i]);
}
}
}
int num[];
void query(node *root,char *s)
{
int l=strlen(s);
node *p=root,*tmp;
for(int i=;i<l;i++)
{
int k=s[i]-'a';
while(!p->a[k]&&p!=root)p=p->tail;
p=p->a[k];
if(!p)p=root;
tmp=p;
while(tmp!=root)
{
if(tmp->cnt>=)
{
if(tmp->id!=-)
num[tmp->id]++;
}
tmp=tmp->tail;
}
}
} char s[],t[][];
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
memset(num,,sizeof num);
nonocount=;
node *p=newnode();
for(int i=;i<n;i++)
{
scanf("%s",t[i]);
build(p,t[i],i);
}
gettail(p);
scanf("%s",s);
query(p,s);
int ans=;
for(int i=;i<n;i++)
ans=max(ans,num[i]);
printf("%d\n",ans);
for(int i=;i<n;i++)
if(ans==num[i])
puts(t[i]);
}
return ;
}

uva 1449 - Dominating Patterns的更多相关文章

  1. UVa 1449 - Dominating Patterns (AC自动机)

    题目大意:给出多个字符串模板,并给出一个文本串,求在文本串中出现最多的模板,输出最多的次数并输出该模板(若有多个满足,则按输入顺序输出). 思路:赤裸裸的 AC自动机,上模板. 代码: #includ ...

  2. 【UVA】1449-Dominating Patterns(AC自己主动机)

    AC自己主动机的模板题.须要注意的是,对于每一个字符串,须要利用map将它映射到一个结点上,这样才干按顺序输出结果. 14360841 1449 option=com_onlinejudge& ...

  3. 【暑假】[实用数据结构]UVAlive 4670 Dominating Patterns

    UVAlive 4670 Dominating Patterns 题目:   Dominating Patterns   Time Limit: 3000MS   Memory Limit: Unkn ...

  4. Dominating Patterns

    Dominating Patterns Time Limit:3000MS   Memory Limit:Unknown   64bit IO Format:%lld & %llu Descr ...

  5. UVA1449 Dominating Patterns

    UVA1449 Dominating Patterns 题目描述 有N个由小写字母组成的模式串以及一个文本串T.每个模式串可能会在文本串中出现多次.你需要找出哪些模式串在文本串T中出现的次数最多. 输 ...

  6. LA4670 Dominating Patterns AC自动机模板

    Dominating Patterns 每次看着别人的代码改成自己的模板都很头大...空间少了个0卡了好久 裸题,用比map + string更高效的vector代替蓝书中的处理方法 #include ...

  7. UVa Live 4670 Dominating Patterns - Aho-Corasick自动机

    题目传送门 快速的通道I 快速的通道II 题目大意 给定一堆短串,和一个文本串,问哪些短串在文本串中出现的次数最多. 我觉得刘汝佳的做法,时间复杂度有问题.只是似乎这道题短串串长太短不好卡.比如给出的 ...

  8. UVALive 4670 Dominating Patterns --AC自动机第一题

    题意:多个模板串,一个文本串,求出那些模板串在文本串中出现次数最多. 解法:AC自动机入门模板题. 代码: #include <iostream> #include <cstdio& ...

  9. AC自动机 LA 4670 Dominating Patterns

    题目传送门 题意:训练指南P216 分析:求出现最多次数的字串,那么对每个字串映射id,cnt记录次数求最大就可以了. #include <bits/stdc++.h> using nam ...

随机推荐

  1. 集合练习——Set部分

    我们知道list存储的是有序不唯一的元素. set存储的是无序唯一的元素. 那么下面看一个例子吧: package CollectionPart; import java.util.HashSet; ...

  2. kali2.0如何安装中文输入法

    由于kali的更新源是国外网站,替换成国内的镜像站,具体操作如下: 打开终端输入 leafpad /etc/apt/sources.list   把下面的源粘贴进去,原有内容注释掉 #中科大源deb  ...

  3. Atom编辑器入门到精通(二) 插件的安装和管理

    在本节中我们会学习如果安装和使用插件插件是Atom中一个非常重要的组成部分,很多功能都是以插件形式存在的.比如上篇文章中提到的目录树和设置等窗口都是通过默认安装的插件来实现的. 查看已安装的插件 打开 ...

  4. DNS加速之“智能DNS”跟“双线加速”、“CDN加速”的区别

    “智能DNS”跟“双线加速”.“CDN加速”的区别相信,很大部分IDC用户可能还没弄清楚状况,有人觉得智能DNS跟双线加速.CDN加速是类似的技术.其实不然,它们在工作方式上有着本质的区别,但它们又可 ...

  5. javascript-02

    1.js的特点2.js的数据类型3.js运算符 4.js的全局变量   |-定义在函数体外部的变量   |-定义在函数体内部没有使用var声明 var和没有var声明变量的区别?     |-var ...

  6. 如何创建windows xp 虚拟机

         如何创建windows xp 虚拟机 一.所需软件 1. VMware-workstation-full-12.0.0-2985596 赠送vm12 激活key一枚: 5A02H-AU243 ...

  7. C#微信公众号开发 -- (二)验证成为开发者

    接下来就是验证成为开发者了.先来看一下验证的界面及需要填写的信息 在接口配置信息中填写需要处理验证信息的页面或者一般性处理文件,这里以aspx页面为例 URl中的格式为:http://XXX.com/ ...

  8. Block中的引用循环

    原文地址:http://www.cnblogs.com/lujianwenance/p/5910490.html Block在实际的开发中非常的常用,事件回调.传值.封装成代码块调用等等.很多人都对b ...

  9. WPF TreeView递归遍历相关方法

    /// <summary> /// 递归改变组织树选中状态. /// </summary> /// <param name="org">< ...

  10. ipod nano 无法添加mp4视频 电影失败解决方法

    我的是nano7. 导入mp4各种错误, 同步资料库 无效等等方法都没用. 后来发现当中 多个mp4,少年pi.mp4竟然导入成功, 怀疑是mp4格式不符合nano 于是:(测试后成功) 先拉到资料库 ...