摘要: BZOJ4566 [Haoi2016]找相同字符 给定两个字符串$s和t$,要求找出两个字符串中所有可以相互匹配的子串对的数量 首先考虑可以怎么做,我们可以枚举$t$串的前缀$t'$,然后找$t'$的后缀能和$s$串匹配上的数量 这部分做法和和求$LCS$差不多 我们首先根据$s$串建$SAM$,然 阅读全文
posted @ 2020-04-15 17:43 _kiko 阅读(140) 评论(0) 推荐(0) 编辑
摘要: [Sdoi2016]生成魔咒 动态维护不同子串的数量 想想如果只要查询一次要怎么做,那就是计算各个点的$len[u] len[link[u]]$然后求和即可,现在要求动态更新,我们可以保存一个答案,然后每次更新后缀链接的时候,如果是连接的话就要加上$len[u] len[link[u]]$,断开的话 阅读全文
posted @ 2020-04-15 16:17 _kiko 阅读(95) 评论(0) 推荐(0) 编辑
摘要: P2408 不同子串个数 计算一个字符串的不同子串个数 两种方法,一种是$dp$出来$SAM$从起点开始的路径数量 另一种方法就是计算每个点的$len[i] len[link[i]]$这个计算的就是这个等价类的不同串的数量 阅读全文
posted @ 2020-04-15 15:40 _kiko 阅读(179) 评论(0) 推荐(0) 编辑
摘要: LCS2 Longest Common Substring II 多个字符串找最长公共子串 以其中一个串建$SAM$,然后用其他串一个个去匹配,每次的匹配方式和两个串找$LCS$一样,就是要记录$SAM$的每个状态和当前匹配串匹配的最大值$maxx$,这个在匹配完一个串之后需要通过$parent$树 阅读全文
posted @ 2020-04-15 11:55 _kiko 阅读(106) 评论(0) 推荐(0) 编辑