题目链接:http://vjudge.net/problem/36265

#include<bits/stdc++.h>
#define N 200
using namespace std;
const int maxnode=11000;
const int sigma_size=26;
int res[N];
struct AC_Automata
{int ch[maxnode][sigma_size];int val[maxnode];   /// 每个字符串的结尾结点都有一个非0的valint f[maxnode];     /// fail函数int last[maxnode];  /// last[i]=j表j节点表示的单词是i节点单词的后缀,且j节点是单词节点int sz;///初始化0号根节点的相关信息void init(){sz=1;memset(ch[0],0,sizeof(ch[0]));memset(res,0,sizeof res);val[0]=0;}///Insert负责构造ch与val数组///插入字符串,v必须非0表示一个单词节点void Insert(char *s,int v){int n=strlen(s),u=0;for(int i=0; i<n; i++){int id=s[i]-'a';if(ch[u][id]==0){ch[u][id]=sz;memset(ch[sz],0,sizeof(ch[sz]));val[sz++]=0;}u=ch[u][id];}val[u]=v;}///getFail函数负责构造f和last数组void getFail()///bfs的作用就是从根节点开始向下进行路径的遍历,从而达到线性求next数组的作用
    {queue<int> q;last[0]=f[0]=0;for(int i=0; i<sigma_size; i++){int u=ch[0][i];if(u){f[u]=last[u]=0;q.push(u);}}while(!q.empty())/// 按BFS顺序计算fail
        {int r=q.front(); q.pop();for(int i=0;i<sigma_size;i++)///找它的儿子
            {int u=ch[r][i];if(u==0)continue;///为0的话肯定不是它的儿子
                q.push(u);int v=f[r];while(v && ch[v][i]==0)v=f[v];f[u]= ch[v][i];last[u] =  val[f[u]]?f[u]:last[f[u]];}}}/// 在s中找出 出现了哪几个模板单词void Find(char *s){int n=strlen(s),j=0;for(int i=0; i<n; i++){int id=s[i]-'a';while(j && ch[j][id]==0)j=f[j];///找与他能匹配的最大位置j=ch[j][id];if(val[j]){print(j);}else if(last[j]){print(last[j]);}}}///递归打印与结点i后缀相同的前缀节点编号///进入此函数前需保证val[i]>0void print(int i){if(val[i]){res[val[i]]++;print(last[i]);}}};
AC_Automata ac;
char word[N][N/2];
char op[1000005];
int main()
{//freopen("C:\\Users\\acer\\Desktop\\in.txt","r",stdin);int n;while(scanf("%d",&n)!=EOF&&n){ac.init();for(int i=1;i<=n;i++){scanf("%s",&word[i]);ac.Insert(word[i],i);}ac.getFail();scanf("%s",op);ac.Find(op);int maxn=-1;for(int i=1;i<=n;i++)if(res[i]>maxn)maxn=res[i];printf("%d\n",maxn);int c=0;for(int i=1;i<=n;i++){if(res[i]==maxn){if(c)puts("");c++;printf("%s",word[i]);}}printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/wuwangchuxin0924/p/6023703.html

Dominating Patterns相关推荐

  1. LA4670 Dominating Patterns[AC自动机]

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

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

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

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

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

  4. LA_4670_Dominating_Patterns_(AC自动机+map)

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

  5. [转] Leaving patterns practices

    [J.D. Meier's Blog]"Life is like skiing.  Just like skiing, the goal is not to get to the botto ...

  6. 视频中的运动特征--Learning Motion Patterns in Videos

    Learning Motion Patterns in Videos CVPR2017 Torch code: http://thoth.inrialpes.fr/research/mpnet 本文要 ...

  7. Conventions and patterns for multi-platform development

    For Developers‎ > ‎Design Documents‎ > ‎ Conventions and patterns for multi-platform developme ...

  8. 艾伟_转载:C# Design Patterns (3) - Decorator

    Decorator Pattern (装饰模式) 装饰模式可「动态」地给一个对象添加一些额外的职责,提供有别于「继承」的另一种选择.就扩展功能而言,Decorator Pattern 透过 Aggre ...

  9. WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS

    2019独角兽企业重金招聘Python工程师标准>>> WHAT THE DATA SAYS ABOUT KUBERNETES DEPLOYMENT PATTERNS The con ...

最新文章

  1. 【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
  2. 分析工厂模式中的问题并改造
  3. 【HDU - 5014】Number Sequence(贪心构造)
  4. webapi 初识 net
  5. 使用python在ArcGIS中合并多个图层中的数据
  6. oracle工作日执行job,Oracle中执行Job定时执行
  7. 解决Win7下JMF读取摄像头错误
  8. 局域网p2p终结者之类流氓软件抢占网速的原理
  9. net反编译工具Reflector下载
  10. 触摸按键 原理 研究笔记
  11. bootstrap之双日历时间段选择控件—daterangepicker
  12. opencv不规则掩膜裁剪图片
  13. APP开发:线上教育APP盈利模式分析
  14. 【微信小程序】上传Word、txt、Excel、PPT等文件
  15. Bootstrap CSS Layout (1) - Breakpoint
  16. 【蓝桥杯】 C++ 纸张尺寸
  17. 网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
  18. java进阶第二讲-数组、String类
  19. 荣耀80系列,折叠手机magic Vs安装套件谷歌服务框架,GMS,Google Play商店
  20. 模糊综合评价法资料连接

热门文章

  1. 如何在公共WiFi下保持安全?
  2. [转]100个常用的linux命令
  3. 面试题-Category(分类)
  4. shell for循环命令行_精心汇总的24道shell脚本面试题
  5. ​网页图表Highcharts实践教程之标签组与载入动画
  6. java arraylist comparable_Java 两种ArrayList集合自定义对象属性排序,Comparator接口 或 Comparable接口...
  7. mysql延时优化教程_Slave延迟很大的优化方法总结(MySQL优化)
  8. 每隔k次反转一次 链表_leetcode 25 K个一组翻转链表(c++)
  9. python三国演义人物出场统计_python爬取三国演义文本
  10. arcmap shp导出cad无反应_地图数据获取|2、CAD地图获取