山东济南彤昌机械科技有限公司 山东济南江鹏工贸游有限公司

随笔分类 -  后缀自动机

51nod 小Z的trie(Trie+广义SAM)
摘要:【题目链接】 http://www.51nod.com/contest/problem.html#!problemId=1647 【题意】 给定一个n个字符串的Trie,每次询问一个字符串在Trie上的出现次数。 【思路】 将n个字符串构造一个Trie,构造广义后缀自动机,识别Trie中的所有子串。 阅读全文

posted @ 2016-04-07 11:06 hahalidaxin

[OI]省选前模板整理
摘要:省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: 高精度: 矩阵乘法: 数据结构 树状数组: 线段树: Treap: splay: 主席树: Link-Cut-Tree 图 2-SAT: 有向图的强联通分量: 无向图的边的双连通分量: 最短路: 最小生成树: 阅读全文

posted @ 2016-04-05 11:21 hahalidaxin

bzoj 3676 [Apio2014]回文串(Manacher+SAM)
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3676 【题意】 给定一个字符串,定义一个串的权值为长度*出现次数,求最大权的回文子串。 【思路】 马拉车求出本质不同的回文子串。 对于一个回文子串,在SAM中用倍增法在O(logn)的时 阅读全文

posted @ 2016-04-03 11:02 hahalidaxin

bzoj 2555 SubString(SAM+LCT)
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2555 【题意】 给定一个字符串,可以随时插入字符串,提供查询s在其中作为连续子串的出现次数。 【思路】 子串的出现次数,这使我们想到了后缀自动机,如果没有插入操作,则出现次数为字符串对应 阅读全文

posted @ 2016-03-26 14:39 hahalidaxin

UVA1673 str2int(SAM)
摘要:【题目链接】 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51267 【题意】 给定n个字符串,计算所有忽略前导0的子串形成的不重整数之和。 【思路】 既然是处理子串问题,我们可以合并串之后构造一个SAM。 SAM的性质:结 阅读全文

posted @ 2016-03-17 20:46 hahalidaxin

HDU 4622 Reincarnation(SAM)
摘要:Problem Description Now you are back,and have a task to do:Given you a string s consist of lower-case English letters only,denote f(s) as the number o 阅读全文

posted @ 2016-02-19 19:23 hahalidaxin

bzoj 3926 [Zjoi2015]诸神眷顾的幻想乡(SAM)
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3926 【题意】 给定一棵树,每个节点都有相应的颜色,且保证叶子数不超过20,问有多少条本质不同的颜色路径。 【思路】 从每个叶子开始dfs,构建广义后缀自动机,答案为l[i]-l[fa[ 阅读全文

posted @ 2016-02-19 17:41 hahalidaxin

bzoj3998 [TJOI2015]弦论(SAM)
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3998 【题意】 询问排名第k的子串是谁,0代表相同子串不同位置算作相同,1代表相同子串不同位置算作不同。 【思路】 0的情况和这个题一样每个子串不同位置出现次数算作1; 至于1,统计va 阅读全文

posted @ 2016-02-19 13:06 hahalidaxin

bzoj2946 [Poi2000]公共串(SA,SAM)
摘要:【题意】 多串求LCS。 【思路】 主要是想找一下SAM的优越感 :) velui good 后缀数组划分height需要注意不少细节 <_<,然后不停debug 【代码】 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 u 阅读全文

posted @ 2016-02-19 11:43 hahalidaxin

codevs 3160 最长公共子串(SAM)
摘要:3160 最长公共子串 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。 输入描述 Input Description 读入两个字符串 输出描述 Output Description 输出最长公共子串的长度 样例输入 Sample Input yesho 阅读全文

posted @ 2016-02-18 20:21 hahalidaxin

spoj 7258 SUBLEX(SAM,名次)
摘要:【题目链接】 http://www.spoj.com/problems/SUBLEX/en/ 【题意】 给定一个字符串,询问次序为k的子串。 【思路】 SAM,名次 建好SAM后求出每个结点根据trans转移向下统计有多少与该结点有相同前缀的子串,每个结点只算一个,因为该结点所代表的字符串集中只可能 阅读全文

posted @ 2016-02-18 17:18 hahalidaxin

spoj 1812 LCS2(SAM+DP)
摘要:【题目链接】 http://www.spoj.com/problems/LCS2/en/ 【题意】 求若干个串的最长公共子串。 【思路】 SAM+DP 先拿个串建个SAM,然后用后面的串匹配,每次将所有的匹配长度记录在状态上取min,然后对所有状态取max即答案。 需要更新fa,因为fa[p]一定比 阅读全文

posted @ 2016-02-18 16:09 hahalidaxin

spoj 8222 Substrings(后缀自动机+DP)
摘要:【题目链接】 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28005 【题意】 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值。求F(1)..F(Length(S)) 【思路】 建立一个SAM。 对 阅读全文

posted @ 2016-02-18 11:03 hahalidaxin

poj3415 Common Substrings(后缀数组,单调栈 | 后缀自动机)
摘要:【题目链接】 http://poj.org/problem?id=3415 【题意】 A与B长度至少为k的公共子串个数。 【思路】 基本思想是将AB各个后缀的lcp-k+1的值求和。首先将两个字符串拼接起来中间用未出现的字符隔开,划分height数组,这首先保证了每一组中字符串之间的公共子串至少有k 阅读全文

posted @ 2015-11-29 17:41 hahalidaxin

poj2774 Long Long Message(后缀数组)
摘要:【题目链接】 http://poj.org/problem?id=2774 【题意】 A & B的最长公共子序列。 【思路】 拼接+height数组。将AB拼接成一个形如A$B的串,枚举height数组并判断sa[i]是否与sa[i-1]分别属于两个不同的字符串,如果是则比较得ans。 时间复杂度为 阅读全文

posted @ 2015-11-28 18:23 hahalidaxin

poj1743 Musical Theme(后缀数组|后缀自动机)
摘要:【题目链接】 http://poj.org/problem?id=1743 【题意】 求不可重叠最长重复子串。 2015-11-27 【思路】 1) 据题意处理字符串 2) 后缀数组。二分长度k,问题成为了判定是否存在两个及以上长度不小于k且互不重叠的子串。根据height数组划分后缀,满足两个条件 阅读全文

posted @ 2015-11-27 21:41 hahalidaxin