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$. ...
随机推荐
- 第64节:Java中的Spring Boot 2.0简介笔记
Java中的Spring Boot 2.0简介笔记 spring boot简介 依赖java8的运行环境 多模块项目 打包和运行 spring boot是由spring framework构建的,sp ...
- ASCII码字符串普通加密解密-android
//android后台Java //ASCII加密 String str = e.getText().toString(); StringBuilder s = new StringBuilder() ...
- 基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现
0.简介 0.1 什么是 Consul Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置. 这里所谓的服务,不仅仅包括常用的 Api 这些服务,也包括软件开发过程 ...
- HttpContextAccessor不会出现线程同步问题?
我有一段比较常规的.net core mvc代码,就是StartUp函数中注册HttpContextAccessor到系统DI工厂中,如图: 然后调用方是service层,这个service层是使用a ...
- Spring 事务传播实践分析
事务管理是应用系统开发中必不可少的一部分.事物将若干的数据库操作作为一个整体控制,一起成功或一起失败.事物有以下特性 原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生. ...
- [Java Plasterer] Java Components 3:Java Enum
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. Written In The Font Whe ...
- TOMCAT启动流程分析
------------------tomcat服务开启----------2014-9-26 9:17:07 org.apache.catalina.core.AprLifecycleListene ...
- TCP传输
看过太多tcp相关文章,但是看完总是不过瘾,似懂非懂,反复考虑过后,我觉得是那些文章太过理论,看起来没有体感,所以吸收不了. 希望这篇文章能做到言简意赅,帮助大家透过案例来理解原理. tcp的特点 这 ...
- Jenkins结合.net平台工具之Nunit
有时候我们需要对从git上拉取的项目进行单元测通过以后才可以发布到测试环境,.net平台下单元测试的框架也很多例如mstest,nunit,xunit等,下面以Nunit为例讲解如何通过Jenkins ...
- Jenkins结合.net平台工具之Nuget
我们刚刚通过msbuild在Jenkins环境下把一个控制台项目生成exe可执行文件,如果我们引用了nuget包,也能够正常生成,但是我们知道,我们在把项目提交到git或者svn上的时候并不包含这些包 ...