摘要:【题目链接】 http://www.51nod.com/contest/problem.html#!problemId=1647 【题意】 给定一个n个字符串的Trie,每次询问一个字符串在Trie上的出现次数。 【思路】 将n个字符串构造一个Trie,构造广义后缀自动机,识别Trie中的所有子串。
阅读全文
摘要:省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: 高精度: 矩阵乘法: 数据结构 树状数组: 线段树: Treap: splay: 主席树: Link-Cut-Tree 图 2-SAT: 有向图的强联通分量: 无向图的边的双连通分量: 最短路: 最小生成树:
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3676 【题意】 给定一个字符串,定义一个串的权值为长度*出现次数,求最大权的回文子串。 【思路】 马拉车求出本质不同的回文子串。 对于一个回文子串,在SAM中用倍增法在O(logn)的时
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=2555 【题意】 给定一个字符串,可以随时插入字符串,提供查询s在其中作为连续子串的出现次数。 【思路】 子串的出现次数,这使我们想到了后缀自动机,如果没有插入操作,则出现次数为字符串对应
阅读全文
摘要:【题目链接】 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51267 【题意】 给定n个字符串,计算所有忽略前导0的子串形成的不重整数之和。 【思路】 既然是处理子串问题,我们可以合并串之后构造一个SAM。 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
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3926 【题意】 给定一棵树,每个节点都有相应的颜色,且保证叶子数不超过20,问有多少条本质不同的颜色路径。 【思路】 从每个叶子开始dfs,构建广义后缀自动机,答案为l[i]-l[fa[
阅读全文
摘要:【题目链接】 http://www.lydsy.com/JudgeOnline/problem.php?id=3998 【题意】 询问排名第k的子串是谁,0代表相同子串不同位置算作相同,1代表相同子串不同位置算作不同。 【思路】 0的情况和这个题一样每个子串不同位置出现次数算作1; 至于1,统计va
阅读全文
摘要:【题意】 多串求LCS。 【思路】 主要是想找一下SAM的优越感 :) velui good 后缀数组划分height需要注意不少细节 <_<,然后不停debug 【代码】 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 u
阅读全文
摘要:3160 最长公共子串 题目描述 Description 给出两个由小写字母组成的字符串,求它们的最长公共子串的长度。 输入描述 Input Description 读入两个字符串 输出描述 Output Description 输出最长公共子串的长度 样例输入 Sample Input yesho
阅读全文
摘要:【题目链接】 http://www.spoj.com/problems/SUBLEX/en/ 【题意】 给定一个字符串,询问次序为k的子串。 【思路】 SAM,名次 建好SAM后求出每个结点根据trans转移向下统计有多少与该结点有相同前缀的子串,每个结点只算一个,因为该结点所代表的字符串集中只可能
阅读全文
摘要:【题目链接】 http://www.spoj.com/problems/LCS2/en/ 【题意】 求若干个串的最长公共子串。 【思路】 SAM+DP 先拿个串建个SAM,然后用后面的串匹配,每次将所有的匹配长度记录在状态上取min,然后对所有状态取max即答案。 需要更新fa,因为fa[p]一定比
阅读全文
摘要:【题目链接】 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28005 【题意】 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值。求F(1)..F(Length(S)) 【思路】 建立一个SAM。 对
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=3415 【题意】 A与B长度至少为k的公共子串个数。 【思路】 基本思想是将AB各个后缀的lcp-k+1的值求和。首先将两个字符串拼接起来中间用未出现的字符隔开,划分height数组,这首先保证了每一组中字符串之间的公共子串至少有k
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=2774 【题意】 A & B的最长公共子序列。 【思路】 拼接+height数组。将AB拼接成一个形如A$B的串,枚举height数组并判断sa[i]是否与sa[i-1]分别属于两个不同的字符串,如果是则比较得ans。 时间复杂度为
阅读全文
摘要:【题目链接】 http://poj.org/problem?id=1743 【题意】 求不可重叠最长重复子串。 2015-11-27 【思路】 1) 据题意处理字符串 2) 后缀数组。二分长度k,问题成为了判定是否存在两个及以上长度不小于k且互不重叠的子串。根据height数组划分后缀,满足两个条件
阅读全文