上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页
摘要: "题意" 回滚莫队见 "这篇博客" 需要注意一个细节,写在代码注释里了。 code: 阅读全文
posted @ 2019-12-19 10:40 nofind 阅读(161) 评论(0) 推荐(0) 编辑
摘要: "题意" 关于回滚莫队见 "这篇博客" 。 code: 阅读全文
posted @ 2019-12-19 08:59 nofind 阅读(113) 评论(0) 推荐(0) 编辑
摘要: "题意" 这题很难想到用莫队去做,因为第一印象是这个没办法O(1)移动指针。 考虑从$[l,r]$移动到$[l,r+1]$ (从$[l,r]$移动到$[l 1,r]$同理)。 我们用ST表$O(1)$找到$[l,r+1]$的最小值的位置$mid$,考虑新加入的r+1会产生哪些贡献:显然是很多以$r+ 阅读全文
posted @ 2019-12-19 07:42 nofind 阅读(105) 评论(0) 推荐(0) 编辑
摘要: "题意" 显然这个$L$是可以二分的,我们只需要判断$L$是否合法即可。 显然有一个$O(n^2)$的DP: 设$f_i$表示当前匹配到$i$的最大匹配长度。 $f_i=max(f_j+i (j+1)+1)\ j\in[i match_i,i L]$ 其中的$match_i$表示前缀$i$能和文本库 阅读全文
posted @ 2019-12-18 21:36 nofind 阅读(100) 评论(0) 推荐(0) 编辑
摘要: "题意" 关于回文自动机的讲解见 "这里" 由于回文串个数是$O(n)$的,直接回文自动机上统计并比较即可。 code: 阅读全文
posted @ 2019-12-18 21:33 nofind 阅读(89) 评论(0) 推荐(0) 编辑
摘要: "题意" 不妨先考虑$l=1,r=|S|$的情况: 这时我们要求的其实是$S,T$的本质不同的公共子串数量。 首先对$S$建一个后缀自动机,同时对于每个$T$,我们也建一个自动机。 根据后缀自动机的性质,后缀自动机的所有节点的代表的字符串的集合代表了$T$的全部子串,因此我们可以考虑$T$后缀自动机 阅读全文
posted @ 2019-12-18 20:16 nofind 阅读(106) 评论(0) 推荐(0) 编辑
摘要: "题意" 学习了广义后缀自动机。 广义后缀自动机与普通后缀自动机的区别在于它是对多个串建的,于是可以处理多个串。 广义后缀自动机和普通后缀自动机的区别在于两个特判,可以见 "这篇题解" 对于这题,因为叶子数量小于20,以每个叶子为根跑dfs,将跑到的字符串插入SAM即可,求不同子串个数是SAM的常规 阅读全文
posted @ 2019-12-18 15:43 nofind 阅读(145) 评论(0) 推荐(0) 编辑
摘要: "题意" 显然加上一个数相等就是差分数组相等,于是问题变为求几个串的最长公共子串。 这里我学习了如何用SA求LCS。 首先问题要转化成求一些后缀的最长公共前缀,要求这些后缀分属不同的串。 于是二分答案,于是问题就变成求一段连续的$height$数组,它们都$\geqslant mid$,并且至少分属 阅读全文
posted @ 2019-12-17 21:31 nofind 阅读(109) 评论(0) 推荐(0) 编辑
摘要: "题意" 考虑二分答案$mid$,现在我们要判断$s[c...c+mid 1]$是否在$s[a...b]$出现过。 首先找到$s[c...c+mid 1]$所在的状态: 建出$parent\ tree$,从$s[1...c+mid 1]$的节点(这个可以记录)用倍增向上跳到最后一个$len\geqs 阅读全文
posted @ 2019-12-17 19:54 nofind 阅读(174) 评论(0) 推荐(0) 编辑
摘要: "题意" 显然是贪心。 先建出SAM,之后能走相同的字符就走相同的字符,实在不行再走一个比它大的。 考虑怎么处理$[l,r]$的限制,我们只要用线段树合并维护出每个点的endpos集合,到时候判断下走这一步是否合法即可。 code: 阅读全文
posted @ 2019-12-17 19:50 nofind 阅读(142) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 14 15 16 ··· 19 下一页