【题目大意】

统计在字符串中出现次数最多的给定的串。

【分析】

构造出AC自动机,然后统计一下每一个的个数,然后输出就可以了。

【代码】

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
using namespace std;
#define F(i,j,k) for (int i=j;i<=k;++i)
#define M(a) memset(a,0,sizeof a)
char ss[1000001],s[151][80];
int trie[10501][26],v[10501],sum=1,fail[10501],c[10501];
int n;
void insert(int num)
{scanf("%s",s[num]);int now=1,len=strlen(s[num])-1;F(i,0,len){if (!trie[now][s[num][i]-'a']) trie[now][s[num][i]-'a']=++sum; now=trie[now][s[num][i]-'a'];}v[now]=num;
}
void getfail()
{queue<int>q;q.push(1);while(!q.empty()){int x=q.front(),j;q.pop();F(i,0,25){j=fail[x];while(j&&!trie[j][i]) j=fail[j];if (trie[x][i]){fail[trie[x][i]]=j?trie[j][i]:1;q.push(trie[x][i]);}else trie[x][i]=j?trie[j][i]:1;}}
}
void calc(int j)
{while(j){if (v[j]) c[v[j]]++;j=fail[j];}
}
void find()
{int l=strlen(ss)-1,now=1;F(i,0,l){now=trie[now][ss[i]-'a'];calc(now);}
}
void print()
{int maxi=-1;for (int i=1;i<=n;++i){if (c[i]>maxi) maxi=c[i];}printf("%d\n",maxi);for (int i=1;i<=n;++i){if (c[i]==maxi) {printf("%s\n",s[i]);}}
}
int main()
{while(scanf("%d",&n)==1&&n){M(trie); M(fail);M(c);M(v); sum=1;F(i,1,n) insert(i);getfail();scanf("%s",ss);find();print();}
} 

UVA 1449 Dominating Patterns相关推荐

  1. AC自动机加强版 uva 1449 - Dominating Patterns

    AC自动机最初作用  一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过. 当然这不是AC自动机的全部作用. 本文就是一例,给出几个单词,查询在text里 ...

  2. LA4670 Dominating Patterns[AC自动机]

    The archaeologists are going to decipher a very mysterious "language". Now, they know many ...

  3. Dominating Patterns

    题目链接:http://vjudge.net/problem/36265 #include<bits/stdc++.h> #define N 200 using namespace std ...

  4. jenkins换服务器找不到包,服务器重启后Jenkins项目部分丢失问题解决方法

    UVALive 4670 Dominating Patterns --AC自动机第一题 题意:多个模板串,一个文本串,求出那些模板串在文本串中出现次数最多. 解法:AC自动机入门模板题. 代码: #i ...

  5. LA_4670_Dominating_Patterns_(AC自动机+map)

    描述 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...

  6. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  7. [搜索]UVa 129 困难的串

    题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...

  8. uva 401.Palindromes

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  9. Uva 3767 Dynamic len(set(a[L:R])) 树套树

    Dynamic len(set(a[L:R])) Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 https://uva.onlinejudge.org/in ...

  10. UVA 11752 超级幂

    UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS     Memory Limit:0KB     64bit IO Format:%lld & ...

最新文章

  1. Knockout2.x:ko.dataFor()、ko.contextFor()使用
  2. android从放弃到精通 第12天 勿忘初心
  3. 华为防火墙的技术积累
  4. 必须要改变这样的生活
  5. axure9 邮件点击效果_总是收到无关的工作邮件?这个有意思的工具可以帮你消灭它们...
  6. MySQL引擎innodb和mysum_mysql数据库引擎InnoDB和MyISAM
  7. Spring源码版本命名规则及下载安装(下)笔记
  8. c语言运算符优先级结合,C语言运算符优先级和结合性
  9. 山东工商学院第五届ACM趣味编程大赛感想
  10. Shell设置环境变量
  11. 超详细的Python安装和环境搭建教程
  12. python图形化界面设计gui_Python图形界面GUI程序设计
  13. 发送速率(传输速率)和传播速率
  14. 写口算用计算机作文600字,口算考试作文600字
  15. python怎么输出变量加文字书名_python的交互模式怎么输出名文汉字
  16. StrandHogg漏洞修复
  17. e1载波的数据速率是_Wi-Fi 6(802.11ax)解析25:DCM双载波调制技术
  18. noip2007 守望者的逃离 (贪心)
  19. 使用WordPress搭建个人网站
  20. 视频教程-PHP软件开发-PHP

热门文章

  1. 快手科技——Animoji
  2. ThingJS:如何一键生成3D城市地图
  3. sql查询重复订单号
  4. 细化算法matlab
  5. QT自定义Widget实现鼠标拖动窗口移动位置及鼠标拖拽窗口边缘窗口大小改变
  6. 微信小程序链接wifi
  7. arm mali 天梯图_11月最新版联发科CPU天梯图 直观看天梯图秒懂联发科处理器排行...
  8. 游戏性能优化的五个方向
  9. SUSE退出Ceph市场转向Longhorn
  10. 微淘客推广技巧,教你如何用微信公众号淘客引流技巧