后缀数组
CR1SceNT
这个作者很懒,什么都没留下…
展开
-
BZOJ1031: [JSOI2007]字符加密Cipher
题目链接将原串复制一遍,后缀数组区间长度只枚举到n/2,即原串长,最后输出时枚举,若sa[i]小于n/2,输出s[sa[i]+n/2-1]。【代码】#include <cstdio>#include <iostream>#include <queue>#include <vector>#include <algorithm>#include <cstring>#include <cmat原创 2017-01-17 09:57:27 · 195 阅读 · 0 评论 -
POJ1743:Musical Theme
Poj1743就先把相邻两个数相减构成一个新的数组再做咯。(再离散化一下) 然后发现题目要求的就是两个后缀的最长不相交前缀。 那么二分+判定就好了。具体看看代码就明白了。【代码】#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <queue>#include <cmath原创 2017-05-17 16:43:32 · 283 阅读 · 0 评论 -
BZOJ1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
题目链接离散化后后缀数组。若将模式串看为最长公共前缀,即是求原串中K个后缀的最长公共前缀。易知若要前缀最长,则K个串的首位置的rank值必定连续,即这k个串的首位置为sa[i]~sa[i+k-1] (i+k-1 < n)。所以即是求连续的K-1个height值中最小值的最大值。可以用单调队列维护。离散化从0开始的求height过程中要加判断。。超过原串长的部分不可算。。拍出来还调了半天。。【代码】#原创 2017-01-17 15:08:15 · 248 阅读 · 0 评论 -
NOI2015 Day2
Day2Day2不出意料的血崩。。第一题UOJUOJ还被附加数据卡了三分。。第二题只会打40分暴力,看出来了后缀数组后面的还是不会打(结果后来发现后缀数组不光打错。。板子都有问题。。然后成功被暴力吊打)第三题看起来就很烦。。dpdp还最小流,,哪一个都不好做啊QAQQAQ,打到一半弃掉弃掉!然而某大佬表我说,“前年暑假我p都不会的时候这个题都会打一二十”。我真的被表的无fuckfuck说..前年暑假原创 2017-05-03 21:04:48 · 519 阅读 · 0 评论 -
BZOJ4516: [Sdoi2016]生成魔咒
BZOJ4516每次在结尾添加一个数,相当于添加一个前缀。 那么倒过来看,变成每次在开头添加一个数,也就是添加一个后缀。 假若新的后缀长为xx,那么相当于在原有的基础上增加了xx个串,假设其中有yy个串已经出现过。 那么ansi=ansi−1+x−yans_i=ans_{i-1}+x-y 考虑如何求这个yy 考虑新加入的串和已有串的冲突。假设新串s=aadds=aadd,原有串ss=add原创 2017-06-12 16:47:19 · 335 阅读 · 0 评论 -
2018-2019 ACM-ICPC, Asia Jiaozuo H - Can You Solve the Harder Problem?
Portal:GYM-102028H题意:求所有本质不同子序列的最大值的和。思路:参考本质不同的子串做法处理本质不同子序列:后缀数组,heightheightheight部分的子串就是没有贡献的子串。考虑以位置 iii 为左端点的所有子串答案的求法,找到 iii 后第一个大于 a[i]a[i]a[i] 的位置 PosPosPos 。 sum[i]=a[i]∗(Pos−i)+sum[...原创 2019-04-03 11:25:08 · 866 阅读 · 0 评论