上一页 1 ··· 6 7 8 9 10 11 12 13 下一页
摘要: BZOJ3238 [Ahoi2013]差异 给定一个串,问其任意两个后缀的最长公共前缀长度的和 1.又是后缀,又是$lcp$,很显然直接拿$SA$的$height$数组搞就好了,配合一下单调栈 阅读全文
posted @ 2020-04-16 15:12 _kiko 阅读(98) 评论(0) 推荐(0) 编辑
摘要: HDU4622 Reincarnation 给出一个串,每次询问其一个子串有多少不同的子串 按每个后缀建立$SAM$不断往后加字符,然后记录答案,查询的时候直接用即可 阅读全文
posted @ 2020-04-16 11:48 _kiko 阅读(94) 评论(0) 推荐(0) 编辑
摘要: BZOJ1396 识别子串 给定一个串$s$,对于串中的每个位置,输出经过这个位置且只在$s$中出现一次的子串的最短长度 朴素的想法是,我们要找到那些只出现一次的子串,之后遍历每个串,把串所覆盖的区域区间和串长取$min$ 考虑优化,根据$s$串先建立$SAM$,然后计算出每个状态的$endpos$ 阅读全文
posted @ 2020-04-16 01:52 _kiko 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 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 阅读(181) 评论(0) 推荐(0) 编辑
摘要: LCS2 Longest Common Substring II 多个字符串找最长公共子串 以其中一个串建$SAM$,然后用其他串一个个去匹配,每次的匹配方式和两个串找$LCS$一样,就是要记录$SAM$的每个状态和当前匹配串匹配的最大值$maxx$,这个在匹配完一个串之后需要通过$parent$树 阅读全文
posted @ 2020-04-15 11:55 _kiko 阅读(107) 评论(0) 推荐(0) 编辑
摘要: BZOJ2555. SubString 要求在线询问一个串在原串中出现的次数,并且可以在原串末尾添加字符串 如果没有修改的话,考虑建出$parent$树之后统计每个$endpos$节点的$right$集合大小,现在要求动态添加字符,那么由于$parent$树的形态会变,所以用$LCT$来维护$par 阅读全文
posted @ 2020-04-14 23:57 _kiko 阅读(93) 评论(0) 推荐(0) 编辑
摘要: POJ1743 Musical Theme 要找长度$\ge 5$且出现次数$\ge 2$并且第一次出现和最后一次出现不重叠的最长子串。 题目条件中,如果对于两个串,在一个串的每个数上都加上相同的数之后可以得到另一个串,那么这个两个串可以被是相同的。 首先我们先得到差分数组,然后要求的就是差分数组中 阅读全文
posted @ 2020-04-14 19:48 _kiko 阅读(92) 评论(0) 推荐(0) 编辑
摘要: BZOJ2882 工艺 给出一个串,要求其循环同构串中字典序最小的那个 串翻倍建$SAM$然后从起点开始贪心的跑$n$次即可 当然也能用最小表示法来做 阅读全文
posted @ 2020-04-14 16:48 _kiko 阅读(181) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 下一页