简单的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. [置顶] 读取pdf并且在web页面中显示

    读取pdf并且在web页面中显示 if (System.IO.File.Exists(f)) { Response.ContentType = "applicationpdf"; ...

  2. TCP三次握手/四次握手

    TCP连接三次握手 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源.Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样 ...

  3. ASIC 前端功能验证等级与对应年薪划分[个人意见] (2011-07-04 15:33:35

    下面的讨论转载自eetop,我选取了一些有意义的讨论,加了我的评注. 楼主zhhzhuawei认为 ===================================== 对于ASIC的前端功能验 ...

  4. Python教程:ORM连接Sqlite数据库,软件架构基础

    python语言因其语法简单易学习,且高效率应用广,近几年来发展迅猛,一度进入编程语言排行榜前六名.为了使程序员能更快的学习Python语言,所以写的此教程.也可以说是对自己学习的总结.但文章尽量会使 ...

  5. JavaScript平常会跳的坑系列(一)

    function Foo() { //定义foo函数 getName = function () { console.log('1');}; console.log(this); return thi ...

  6. css-position的相关用法

    简介 position用于固定位置,是尤为重要的一个属性 其值可以为: static: 默认值,忽略top, bottom, left, right 或者 z-index 声明 relative: 相 ...

  7. WebWork2和Spring MVC Framework的比较

    http://daihaixiang.blog.163.com/blog/static/3830134200711411515336/ WebWork2和Spring MVC Framework的比较 ...

  8. Nginx 简单的负载均衡配置示例

    http://www.cnblogs.com/xiaogangqq123/archive/2011/03/02/1969006.html 在此记录下Nginx服务器nginx.conf的配置文件说明, ...

  9. RabbitMQ 原文译05--Topics

    在之前的系统中,我们改进了我们的日志系统,我们使用direct 交换机代替fanout交换机,可以实现选择性的接受日志. 虽然使用direct 交换机改进了我们的系统,但是对于多种条件的判断,依然存在 ...

  10. Oracle初始化

    /*第1步:创建临时表空间 */ create temporary tablespace mdb_temp tempfile 'G:\data\oracle\mdb_temp.ora' size 10 ...