BZOJ2946 [Poi2000]公共串(后缀自动机)
Description
Input
Output
Sample Input
abcb
bca
acbc
Sample Output
HINT
Source
其实这题我没A因为权限号密码忘了 但是在COGS过了那就发一下吧。。 已AC
感觉很zz啊,和单个串有什么区别。
那就直接把除了第一个串之外的SAM建出来然后枚举第一个串暴力匹配求最小就好了
1Ahhh
update:
??为什么网上的题解都和我不一样??
这题好像只建一个SAM就行了??!!感觉自己好菜啊。。。
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- using namespace std;
- const int MAXN = * , INF = 1e9 + ;
- inline int read() {
- char c = getchar(); int x = , f = ;
- while(c < '' || c > '') {if(c == '-') f = -; c = getchar();}
- while(c >= '' && c <= '') x = x * + c - '', c = getchar();
- return x * f;
- }
- struct SuffixAut {
- int fa[MAXN], len[MAXN], ch[MAXN][], tot, last, root, ans, cur;
- SuffixAut() { cur = tot = last = root = ; ans = ;}
- void insert(int x) {
- int now = ++tot, pre = last; last = now;
- len[now] = len[pre] + ;
- for(; pre && !ch[pre][x]; pre = fa[pre]) ch[pre][x] = now;
- if(!pre) fa[now] = root;
- else {
- int q = ch[pre][x];
- if(len[q] == len[pre] + ) fa[now] = q;
- else {
- int nows = ++tot;
- memcpy(ch[nows], ch[q], sizeof(ch[q]));
- fa[nows] = fa[q]; fa[q] = fa[now] = nows; len[nows] = len[pre] + ;
- for(; pre && ch[pre][x] == q; pre = fa[pre]) ch[pre][x] = nows;
- }
- }
- }
- int work(int x) {
- if(ch[cur][x]) {cur = ch[cur][x]; ans++; return ans;}
- for(; cur && !ch[cur][x]; cur = fa[cur]);
- if(!cur) cur = root, ans = ;
- else ans = len[cur] + , cur = ch[cur][x];
- return ans;
- }
- }Suf[];
- char s[][MAXN];
- int N[];
- int main() {
- #ifdef WIN32
- freopen("a.in", "r", stdin);
- #else
- freopen("pow.in", "r", stdin);
- freopen("pow.out", "w", stdout);
- #endif
- int num = read();
- for(int i = ; i <= num; i++) scanf("%s", s[i] + ), N[i] = strlen(s[i] + );
- for(int i = ; i <= num; i++)
- for(int j = ; j <= N[i]; j++)
- Suf[i].insert(s[i][j] - 'a');
- int out = ;
- for(int i = ; i <= N[]; i++) {
- int ans = INF;
- for(int j = ; j <= num; j++)
- ans = min(ans, Suf[j].work(s[][i] - 'a'));
- out = max(out, ans);
- }
- printf("%d", out);
- return ;
- }
BZOJ2946 [Poi2000]公共串(后缀自动机)的更多相关文章
- 【bzoj2946】[Poi2000]公共串 后缀自动机
[Poi2000]公共串 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1386 Solved: 620[Submit][Status][Discus ...
- BZOJ 2946: [Poi2000]公共串( 后缀自动机 )
一个串建后缀自动机, 其他串在上面跑, 然后用当前串跑的去更新全部 ------------------------------------------------------------------ ...
- bzoj 2946 [Poi2000]公共串——后缀自动机
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2946 对每个串都建一个后缀自动机,然后 dfs 其中一个自动机,记录同步的话在别的自动机上走 ...
- BZOJ 2946 [Poi2000]公共串 ——后缀自动机
任意选择一个串作为模式串,构建出后缀自动机. 然后用其他的串在后缀自动机上跑匹配. 然后就到了理解后缀自动机性质的时候. 在某一个节点的最大值是可以沿着parent树上传的. 然后用dp[i][j]表 ...
- BZOJ 2946 POI2000 公共串 后缀自动机(多串最长公共子串)
题意概述:给出N个字符串,每个串的长度<=2000(雾...可能是当年的年代太久远机子太差了),问这N个字符串的最长公共子串长度为多少.(N<=5) 抛开数据结构,先想想朴素做法. 设计一 ...
- 【BZOJ2946】[Poi2000]公共串 后缀数组+二分
[BZOJ2946][Poi2000]公共串 Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务: l 读入单词 l 计 ...
- [POI2000] 公共串 - 后缀数组,二分
[POI2000] 公共串 Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度. Solution 预处理出后缀数组和高度数组,二分答案 \(k\) ,对于每一个连续的 ...
- BZOJ2946 Poi2000 公共串 【后缀自动机】
Description 给出几个由小写字母构成的单词,求它们最长的公共子串的长度. 任务: l 读入单词 l 计算最长公共子串的长度 l 输出结果 Input 文件的第一行是整数 n,1<=n& ...
- [bzoj2946][Poi2000]公共串_后缀数组_二分
公共串 bzoj-2946 Poi-2000 题目大意:给定$n$个字符串,求他们的最长公共子串. 注释:$1\le n\le 5$,$1\le minlen<maxlen\le 2000$. ...
随机推荐
- 10分钟看懂Docker和K8S
本文来源:鲜枣课堂 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫"dotCloud"的公司. 这家公司主要提供基于PaaS的云计算技术服务.具体来说,是和LXC有关的 ...
- Redis学习笔记之位图
目录 位图定义 应用场景 基本使用 查找统计 位图定义 位图并不是一种数据结构,其实就是一种普通的字符串,也可以说是byte数组.基本语法是setbit/getbit,刚才说了是一个byte数组,所以 ...
- PHP环境搭建时缺少php7apache2_4.dll怎么办
PHP环境搭建时缺少php7apache2_4.dll怎么办 下载的文件有问题! 1.在PHP官网点击Download下载时不管选择哪个版本的都有两个类型 如果需要 php7apache2_4.dl ...
- java super和this总结
今天群里有人问我怎么复写父类的构造函数,我当时听错了以为是一般方法,然后就对他说只要同名就可以,然后他告诉我错了,我再仔细看,才知道他问的是复写 父类的构造方法,其实自己也不知道子类能不能复写父类的构 ...
- .Net 并发写入文件的多种方式
1.简介 本文主要演示日常开发中利用多线程写入文件存在的问题,以及解决方案,本文使用最常用的日志案例! 2.使用File.AppendAllText写入日志 这是种常规的做法,通过File定位到日志文 ...
- 如何使用Keras的Model visualization功能
问题 安装上graphviz和pydot之后调用出现如下问题 ['dot', '-Tpng', '/tmp/tmp1KPaiV'] return code: 1 stdout, stderr: War ...
- sql server 备份与恢复系列二 事务日志概述
1.1 日志文件与数据文件一致性 在上一章备份与恢复里了解到事务日志的重要性,这篇重点来了解事务日志. 事务日志记录了数据库所有的改变,能恢复该数据库到改变之前的任意状态.在sql server实例 ...
- Android权限大全(链接地址整理)
版权声明:本文为博主原创文章,未经博主允许不得转载. Manifest.permission https://developer.android.google.cn/reference/android ...
- Python快速学习03:运算 & 缩进和选择
前言 系列文章:[传送门] 这篇昨晚本来要出的,去搭了帐篷,在学校的屋顶上. 运算 运算,不得不说的是运算符. 数学 +, -, *, /, **, %,// 判断 ==, !=, >, > ...
- 从session原理出发解决微信小程序的登陆问题
声明:本文为作者原创文章,转载请注明出处 https://www.cnblogs.com/MaMaNongNong/p/9127416.html 原理知识准备 对于已经熟悉了session原理的同 ...