博客园 首页 私信博主 显示目录 隐藏目录 管理 动画

随笔分类 -  字符串——后缀数组

1
摘要:咕咕 阅读全文
posted @ 2021-04-04 21:09 SovietPower 阅读(326) 评论(0) 推荐(0) 编辑
摘要:有n个栈,每个栈i里有若干个数ai,j(值域为[1,300])。 现在要依次取出所有m个元素,设依次取出的数为a1,a2,...,最小化a1×365m1+a2×365m2+...+am(即取出的数每保留一天价值×365)。 阅读全文
posted @ 2020-09-30 21:21 SovietPower 阅读(177) 评论(0) 推荐(0) 编辑
摘要:给你n,k和长为n的字符串s。一个区间[l,r]是合法的,当且仅当s[l...r]能被分成k个相同的子串。求有多少个合法区间。 n,k3×105阅读全文
posted @ 2019-03-28 10:01 SovietPower 阅读(242) 评论(0) 推荐(0) 编辑
摘要:给定两个串S,T以及一个数k,求T中有多少个子串,满足和S的编辑距离不超过k|S|+|T|105, k5阅读全文
posted @ 2019-01-29 22:10 SovietPower 阅读(259) 评论(0) 推荐(0) 编辑
摘要:为什么要写这个呢... 因为毒瘤出题人模拟赛搬原题→_→ 阅读全文
posted @ 2019-01-15 08:17 SovietPower 阅读(2122) 评论(0) 推荐(2) 编辑
摘要:无摘要.. 阅读全文
posted @ 2019-01-07 17:48 SovietPower 阅读(238) 评论(0) 推荐(0) 编辑
摘要:没有摘要。 阅读全文
posted @ 2018-12-30 16:33 SovietPower 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2018-12-30 08:47 SovietPower 阅读(209) 评论(2) 推荐(1) 编辑
摘要:给出两个串S,T,求TS中出现了多少次。出现是指。可以有3次不匹配。 阅读全文
posted @ 2018-09-20 22:08 SovietPower 阅读(300) 评论(0) 推荐(1) 编辑
摘要:"题目链接" SAM: 能成为识别子串的只有那些|right|=1的节点代表的串。 设这个节点对应原串的右端点为r[i],则如果|right[i]|=1,即s[ [rileni+1,rilenfai]ri ]这些子串都出现一次。 那么对于[ r[i] len[ 阅读全文
posted @ 2018-06-30 19:48 SovietPower 阅读(219) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 环可以拆成链;对字符串排序能想到后缀数组。 完了。输出时忽略长度不足n的串,输出s[sa[i]+n 1],即排名为i的字符串的末尾。 阅读全文
posted @ 2018-05-02 10:43 SovietPower 阅读(196) 评论(0) 推荐(0) 编辑
摘要:"题目链接" "后缀自动机做法见这(超好写啊)" 。 后缀数组是可以做的: 本质不同的字符串的个数为 ht[i],即 n(n+1)2ht[i]. 如果是每次往后边插入字符,会改变SA[]。但如果向前边插入字符,相当于只加入了一个后缀。 阅读全文
posted @ 2018-04-03 16:03 SovietPower 阅读(249) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给定SA数组,求满足SA[]的一个原字符串(每个字符为小写字母),无解输出 1. Solution 假设我们现在有suf(SA[j]),要构造suf(SA[i]) (要满足i j) 考虑后缀的比较方式,先比较第一位,再比较suf(SA[i]+1)与suf 阅读全文
posted @ 2018-03-15 18:01 SovietPower 阅读(216) 评论(0) 推荐(0) 编辑
摘要:给定两个字符串,求它们有多少个相同子串。相同串的位置不同算多个。 阅读全文
posted @ 2018-03-15 14:02 SovietPower 阅读(213) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 求两个字符串长度不小于k的公共子串对数。 Solution 求出ht[]后先减去k,这样对于两个后缀A',B',它们之间的贡献为min{ht(A)}(A'到B'ht[]的最小值)。 维护一个栈,栈中ht从底到顶递减。 如果当前是求B中后缀i和前边A中子串 阅读全文
posted @ 2018-03-14 21:56 SovietPower 阅读(212) 评论(0) 推荐(0) 编辑
摘要:"题目链接 POJ2774" "SPOJ1811 LCS Longest Common Substring" 比 "后缀自动机" 慢好多(废话→_→)。 Description 求两个字符串最长公共子串 Solution 任何一个子串一定是某个后缀的前缀 可以将两个字符串拼在一起,中间用一个 阅读全文
posted @ 2018-03-14 19:55 SovietPower 阅读(197) 评论(0) 推荐(0) 编辑
摘要:"题目链接" Description 给定一段数字序列(Ai∈[1,88]),求最长的两个子序列满足: 1.长度至少为5 2.一个子序列可以通过全部加或减同一个数来变成另一个子序列 3.两个子序列没有重叠部分 Solution 求不重叠最长重复子序列: SA: 首先二分k,判断是否存在长度为 阅读全文
posted @ 2018-03-14 17:54 SovietPower 阅读(261) 评论(0) 推荐(0) 编辑
摘要:"题目链接" 论找到一个好的教程的正确性。。 "后缀数组" 下标从1编号: cpp //299ms 2560kb include include include const int N=1e5+5; int n,sa[N],rk[N],sa2[N],tm[N],ht[N]; char s[N]; v 阅读全文
posted @ 2018-03-14 14:54 SovietPower 阅读(233) 评论(0) 推荐(0) 编辑
摘要:"题目链接" cpp //输出ht见UOJ.35 include include include const int N=1e6+5; int n,tm[N],t1[N],t2[N],SA[N],rk[N],ht[N]; //SA[i]=j:排名为i的后缀开头的下标为j //rk[i]=j:以下标i 阅读全文
posted @ 2018-02-09 13:34 SovietPower 阅读(297) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示