随笔分类 - 字符串算法 -- SA(后缀数组)
摘要:题目大意:求一个字符串中形如$ABA$的串的数量,其中$B$的长度是给定的 有点像[NOI2016]优秀的拆分这道题 先对序列打差分,然后离散,再正反跑$SA$,跑出$st$表 进入正题 $ABA$串有一个神奇的性质 令$A$串长度是$x$ 如果我们选取了一个位置$i$,再选取一个位置$i+x+m$
阅读全文
摘要:题目大意:求$\sum_{1\leq i<j \leq N} suf_{i}+suf_{j}-2\cdot lcp(suf_{i},suf_{j})$ 先是后缀数组打错了,又是把+=打成了=,我是zz 我的做法比较奇葩.. 转化式子,原式=$\sum_{i=1}^{n-1}(i+1)\cdot i-
阅读全文
摘要:题目大意:略 40分暴力还是很好写的,差分再跑个后缀和 和 后缀最大值就行了 一种正解是后缀数组+并查集 但据说还有后缀数组+单调栈的高端操作蒟蒻的我当然不会 后缀数组求出height,然后从大到小排个序,那么每次把最大height的两个后缀放到一个并查集里 这样,每次根据height合并两个并查集
阅读全文
摘要:题目大意:给你一个字符串,求所有子串的所有优秀拆分总和,优秀的拆分被定义为一个字符串可以被拆分成4个子串,形如$AABB$,其中$AA$相同,$BB$相同,$AB$也可以相同 作为一道国赛题,95分竟然就这么给我们了!只是一个$NOIP$难度的哈希套$DP$啊...... 95分就是从后往前找,统计
阅读全文
摘要:题目大意:求两个字符串的最长公共子串长度 把两个串接在一起,中间放一个#,然后求出height 接下来还是老套路,二分出一个答案ans,然后去验证,如果有连续几个位置的h[i]>=ans,且存在sa[i]的最大值在第二个串里,最小值在第一个串里,说明答案成立 别再把后缀数组敲错了
阅读全文
摘要:题目大意:求可重叠的相同子串数量至少是K的子串最长长度 洛谷传送门 依然是后缀数组+二分,先用后缀数组处理出height 每次二分出一个长度x,然后去验证,在排序的后缀串集合里,有没有连续数量多于K个串的长度>=x, 但据说有一种高端做法是把二分换成单调队列,能减少常数,可惜我并没有看懂......
阅读全文
摘要:洛谷P2743传送门 题目大意:给你一个序列,求其中最长的一对相似等长子串 一对合法的相似子串被定义为: 1.任意一个子串长度都大于等于5 2.不能有重叠部分 3.其中一个子串可以在全部+/-某个值后和另一个串完全相同 还是老套路了,其实只要求出每一项和前一项的差值序列,这样第三个问题可以被转化为求
阅读全文

浙公网安备 33010602011771号