随笔分类 - 字符串---后缀自动机
摘要:传送门 "洛谷" Solution 做过的比较玄学的后缀自动机。 果然就像$Tham$所讲,后缀自动机这种东西考场考了不可能做的出来的。。。 考虑如果$l=1,r=|S|$的怎么做? 直接建后缀自动机然后跳。 接着就是$l,r$随机。。。 详细说明可点开蓝色题解按钮然后膜拜第一篇题解! 考虑线段树合
阅读全文
摘要:传送门 "洛谷" Solution 考虑要求的是什么,前缀的本质不同的字符串个数? 如果只要求一个串那么显然答案是$\sum_{i=1}^{tot}len[i] len[fa[i]]$(实际上这个并不显然,~~想一想为什么~~) 接着就是在线的啦,你可别忘了SAM本身就是在线算法,每一次算一个贡献就
阅读全文
摘要:传送门 "洛谷" Solution 考虑他要求的是最长公共子串对吧,那么我们对于一个串建后缀自动机,另一个串在后缀自动机上面跑就是了。 复杂度$O(n+m)$的,很棒! 代码实现 "代码戳这里"
阅读全文
摘要:传送门 "BZOJ" "洛谷" Solution 考虑我们每找到一个回文串就更新一次答案,跑个SAM,这样子复杂度是爆炸的。 接下来的就是优化: 我们可以倍增跳直到跳不了,最后的siz就是出现次数。 没了?没了! 代码实现 "代码戳这里"
阅读全文
摘要:传送门 "BZOJ" "洛谷" Solution "SA版本的" 考虑可以建一个SAM? 那么接下来我们就考虑每一对点对之间的贡献了。 把这个式子化简一下就是无序点对之间的那啥(自己意会一下) 然后我们定义边权为len的差值。 然后那个东西不就是$i j$的路径吗? 然后就可以分开考虑每一条边的贡献
阅读全文
摘要:传送门 "BZOJCH" "洛谷" Solution 这个东西要求的不就是最小表示法吗? 把原串复制一遍然后都加到后缀自动机里面去。 用个map跑一下,这样子可以保证每一次选的是最小字典序的。 然后跑$n$次就可以了。 小插曲 对面的神仙 "hyjhyj" 问我这个东西如果长度不够怎么办。 emmm
阅读全文