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

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

1
摘要:咕咕 阅读全文
posted @ 2021-04-04 21:09 SovietPower 阅读(378) 评论(0) 推荐(0)
摘要:有$n$个栈,每个栈$i$里有若干个数$a_{i,j}$(值域为$[1,300]$)。 现在要依次取出所有$m$个元素,设依次取出的数为$a_1,a_2,...$,最小化$a_1\times365^{m-1}+a_2\times365^{m-2}+...+a_m$(即取出的数每保留一天价值$\times365$)。 阅读全文
posted @ 2020-09-30 21:21 SovietPower 阅读(204) 评论(0) 推荐(0)
摘要:给你$n,k$和长为$n$的字符串$s$。一个区间$[l,r]$是合法的,当且仅当$s[l...r]$能被分成$k$个相同的子串。求有多少个合法区间。 $n,k\leq3\times10^5$。 阅读全文
posted @ 2019-03-28 10:01 SovietPower 阅读(255) 评论(0) 推荐(0)
摘要:给定两个串$S,T$以及一个数$k$,求$T$中有多少个子串,满足和$S$的编辑距离不超过$k$。 $|S|+|T|\leq10^5,\ k\leq 5$。 阅读全文
posted @ 2019-01-29 22:10 SovietPower 阅读(270) 评论(0) 推荐(0)
摘要:为什么要写这个呢... 因为毒瘤出题人模拟赛搬原题→_→ 阅读全文
posted @ 2019-01-15 08:17 SovietPower 阅读(2290) 评论(0) 推荐(2)
摘要:无摘要.. 阅读全文
posted @ 2019-01-07 17:48 SovietPower 阅读(250) 评论(0) 推荐(0)
摘要:没有摘要。 阅读全文
posted @ 2018-12-30 16:33 SovietPower 阅读(193) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2018-12-30 08:47 SovietPower 阅读(220) 评论(2) 推荐(1)
摘要:给出两个串$S,T$,求$T$在$S$中出现了多少次。出现是指。可以有$3$次不匹配。 阅读全文
posted @ 2018-09-20 22:08 SovietPower 阅读(309) 评论(0) 推荐(1)
摘要:"题目链接" SAM: 能成为识别子串的只有那些|right|=1的节点代表的串。 设这个节点对应原串的右端点为r[i],则如果|right[i]|=1,即$s[\ [r_i len_i+1,r_i len_{fa_i} ]\sim r_i\ ]$这些子串都出现一次。 那么对于[ r[i] len[ 阅读全文
posted @ 2018-06-30 19:48 SovietPower 阅读(225) 评论(0) 推荐(0)
摘要:"题目链接" 环可以拆成链;对字符串排序能想到后缀数组。 完了。输出时忽略长度不足n的串,输出s[sa[i]+n 1],即排名为i的字符串的末尾。 阅读全文
posted @ 2018-05-02 10:43 SovietPower 阅读(212) 评论(0) 推荐(0)
摘要:"题目链接" "后缀自动机做法见这(超好写啊)" 。 后缀数组是可以做的: 本质不同的字符串的个数为 $子串个数 \sum_{ht[i]}$,即 $\frac{n(n+1)}{2} \sum_{ht[i]}$. 如果是每次往后边插入字符,会改变SA[]。但如果向前边插入字符,相当于只加入了一个后缀。 阅读全文
posted @ 2018-04-03 16:03 SovietPower 阅读(264) 评论(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 阅读(229) 评论(0) 推荐(0)
摘要:给定两个字符串,求它们有多少个相同子串。相同串的位置不同算多个。 阅读全文
posted @ 2018-03-15 14:02 SovietPower 阅读(223) 评论(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 阅读(227) 评论(0) 推荐(0)
摘要:"题目链接 POJ2774" "SPOJ1811 LCS Longest Common Substring" 比 "后缀自动机" 慢好多(废话→_→)。 $Description$ 求两个字符串最长公共子串 $Solution$ 任何一个子串一定是某个后缀的前缀 可以将两个字符串拼在一起,中间用一个 阅读全文
posted @ 2018-03-14 19:55 SovietPower 阅读(213) 评论(0) 推荐(0)
摘要:"题目链接" $Description$ 给定一段数字序列(Ai∈[1,88]),求最长的两个子序列满足: 1.长度至少为5 2.一个子序列可以通过全部加或减同一个数来变成另一个子序列 3.两个子序列没有重叠部分 $Solution$ 求不重叠最长重复子序列: SA: 首先二分k,判断是否存在长度为 阅读全文
posted @ 2018-03-14 17:54 SovietPower 阅读(273) 评论(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 阅读(245) 评论(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 阅读(306) 评论(0) 推荐(0)

1