题目:Dominating Patterns

思路:ac自动机。注意有重复。

代码:

#include<iostream>
#include<cstdio>
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <stack>
#include <queue>
#include <deque>
#include <set>
#include <cstring>
#include <map>
using namespace std;#define maxn 150
#define maxs 26
#define maxl 1000000
#define maxw 70int n;struct AC {int ch[maxn*maxw+5][maxs];int val[maxn*maxw+5];int Fail[maxn*maxw+5];char mp[maxn*maxw+5][maxw+5];int mp2[maxn*maxw+5];int sum[maxn*maxw+5];int sz;void clear() {memset(ch,0,sizeof(ch));memset(val,0,sizeof(val));memset(Fail,0,sizeof(Fail));memset(sum,0,sizeof(sum));sz=0;}void insert(char* x,int len) {int u=0;for(int i=0; i<len; i++) {int y=x[i]-'a';if(!ch[u][y]) {ch[u][y]=++sz;}u=ch[u][y];}val[u]++;}void make_fail() {queue<int> que;for(int i=0; i<maxs; i++) {if(ch[0][i]) que.push(ch[0][i]);}while(!que.empty()) {int u=que.front();que.pop();for(int i=0; i<maxs; i++) {if(!ch[u][i]) {ch[u][i]=ch[Fail[u]][i];} else {que.push(ch[u][i]);Fail[ch[u][i]]=ch[Fail[u]][i];}}}}void find(char* s,int len) {int j=0;for(int i=0; i<len; i++) {int x=s[i]-'a';j=ch[j][x];for(int k=j; k; k=Fail[k]) {sum[k]++;}}}void print() {int MAX=0;for(int i=1; i<=n; i++) {MAX=max(MAX,sum[mp2[i]]);}printf("%d\n",MAX);for(int i=1; i<=n; i++) {if(MAX==sum[mp2[i]]) {for(int j=0; j<val[mp2[i]]; j++)printf("%s\n",mp[i]);}}}
};AC ac;int main() {while(~scanf("%d",&n)&&n) {ac.clear();map<string,int> ss;for(int i=0; i<n; i++) {char x[maxw];scanf("%s",x);if(!ss.count(x)) {ac.insert(x,strlen(x));memcpy(ac.mp[i+1],x,sizeof(x));ac.mp2[i+1]=ac.sz;ss[x]=ac.sz;} else i--,n--,ac.val[ss[x]]++;}ac.make_fail();char s[maxl];scanf("%s",s);ac.find(s,strlen(s));ac.print();}return 0;
}

LA 4670 Dominating Patterns相关推荐

  1. LA4670 Dominating Patterns[AC自动机]

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

  2. Dominating Patterns

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

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

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

  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. Paper reading (八十四):Age- and Sex-Dependent Patterns of Gut Microbial Diversity in Human Adults

    论文题目:Age- and Sex-Dependent Patterns of Gut Microbial Diversity in Human Adults scholar 引用:1 页数:12 发 ...

  7. WCDMA中的URA和LA/RA

    1.关于URA的概念: URA(UTRAN Registration Area)是UTRAN内部区域的划分适用于UE处于RRC连接状态的情形,而且只能在UTRAN端使用(比如由UTRAN发起的寻呼). ...

  8. LA 5717枚举+最小生成树回路性质

    1 /*LA 5717 2 <训练指南>P343 3 最小生成树的回路性质 4 在生成的最小生成树上,新增一条边e(u,v) 5 若原图上u到v的路径的最大边大于e,则删除此边,加上e,否 ...

  9. [转] Leaving patterns practices

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

  10. 编译php时错误make ***[libphp5.la] Error 1

    错误信息 make ***[libphp5.la] Error 1 /usr/bin/ld: cannot find -lltdl collect2: ld returned 1 exit statu ...

最新文章

  1. LinearAlgebra_1
  2. 【Google Play】IARC 年龄分级 ( IARC 国际年龄分级联盟 | Google Play 设置应用年龄分级 )
  3. POJ3268 Silver Cow Party(最短路径)
  4. 【HDU5306】【DTOJ2481】Gorgeous Sequence【线段树】
  5. 云数据中心异构资源管理大有可为
  6. 在jsp中应如何避免,request.getContextPath();等get报错问题
  7. C# WPF MVVM开发框架Caliburn.Micro Screens, Conductors 和 Composition⑦
  8. C# 子类实例化基类 基类使用不了子类的方法_C#高级编程面试考题
  9. 强制消除Xcode警告的方法
  10. 《树莓派Python编程入门与实战(第2版)》——2.2 使用Raspbian命令行
  11. error: stray '\357' in program
  12. HenCoder Android 开发进阶: 自定义 View 1-1 绘制基础
  13. EndnoteX7插入文献时,提示“访问未命名的文件时尝试越过其结尾”的解决方法
  14. QT - 实例 - Qt实现局域网聊天工具软件
  15. myeclipse 安装phpeclipse插件
  16. html5判断文字超过几行,判断文字数量超过2行 添加展开按钮 未超过两行则不显示按钮 溢出部分显示省略号...
  17. 机器学习入门好文,强烈推荐
  18. 三星a5000刷Android原生,三星 A5000中文Recovery刷机教程
  19. java nas smb_FreeNAS 02:深入 SMB 服务使用
  20. 狼人杀攻略:你当我好骗吗,我们相信谁!

热门文章

  1. 【数据结构(青岛大学 王卓)】第2章 线性表 学习笔记(七)2.5 线性表的链式表示和实现1
  2. 数学笔记10——拉格朗日中值定理
  3. 什么是云计算机服务,云平台是什么意思 云服务平台有哪些【详细介绍】
  4. 各个电脑品牌BIOS快捷启动热键
  5. echarts饼图自动动画_echarts饼图定时自动切换
  6. 微信小说,微信游戏系统域名被屏蔽是怎么回事
  7. TestNG - 运行失败的test
  8. 将apk和所需库文件编译打包到system/priv-app路径下
  9. 金三银四已过,为大家整理一批高频java面试题,花点耐心看完,offer拿到手软!
  10. 电子烟能破壳类四大天王“和大天壹”新物种么?