UVA 1449 Dominating Patterns
【题目大意】
统计在字符串中出现次数最多的给定的串。
【分析】
构造出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相关推荐
- AC自动机加强版 uva 1449 - Dominating Patterns
AC自动机最初作用 一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过. 当然这不是AC自动机的全部作用. 本文就是一例,给出几个单词,查询在text里 ...
- LA4670 Dominating Patterns[AC自动机]
The archaeologists are going to decipher a very mysterious "language". Now, they know many ...
- Dominating Patterns
题目链接:http://vjudge.net/problem/36265 #include<bits/stdc++.h> #define N 200 using namespace std ...
- jenkins换服务器找不到包,服务器重启后Jenkins项目部分丢失问题解决方法
UVALive 4670 Dominating Patterns --AC自动机第一题 题意:多个模板串,一个文本串,求出那些模板串在文本串中出现次数最多. 解法:AC自动机入门模板题. 代码: #i ...
- LA_4670_Dominating_Patterns_(AC自动机+map)
描述 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- 紫书《算法竞赛入门经典》
紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...
- [搜索]UVa 129 困难的串
题意:将一个包含两个相邻的重复子串的子串,称为"容易的串",其他为"困难的串". 输入正整数n和l,输出由前l个字符组成的,字典序第n小的困难的串. 输入样例: ...
- uva 401.Palindromes
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- 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 ...
- UVA 11752 超级幂
UVA 11752 超级幂 Z - The Super Powers Time Limit:1000MS Memory Limit:0KB 64bit IO Format:%lld & ...
最新文章
- Knockout2.x:ko.dataFor()、ko.contextFor()使用
- android从放弃到精通 第12天 勿忘初心
- 华为防火墙的技术积累
- 必须要改变这样的生活
- axure9 邮件点击效果_总是收到无关的工作邮件?这个有意思的工具可以帮你消灭它们...
- MySQL引擎innodb和mysum_mysql数据库引擎InnoDB和MyISAM
- Spring源码版本命名规则及下载安装(下)笔记
- c语言运算符优先级结合,C语言运算符优先级和结合性
- 山东工商学院第五届ACM趣味编程大赛感想
- Shell设置环境变量
- 超详细的Python安装和环境搭建教程
- python图形化界面设计gui_Python图形界面GUI程序设计
- 发送速率(传输速率)和传播速率
- 写口算用计算机作文600字,口算考试作文600字
- python怎么输出变量加文字书名_python的交互模式怎么输出名文汉字
- StrandHogg漏洞修复
- e1载波的数据速率是_Wi-Fi 6(802.11ax)解析25:DCM双载波调制技术
- noip2007 守望者的逃离 (贪心)
- 使用WordPress搭建个人网站
- 视频教程-PHP软件开发-PHP