后缀数组
seeeagull
这个作者很懒,什么都没留下…
展开
-
[P3975][TJOI2015]弦论(后缀数组)
时隔一年再回归w 这题用后缀数组来做的话,主要就是t=1时比较麻烦。考虑可以想办法得到一个前缀和,求出到排名为i的后缀一共有多少子串。之后再二分找到第k个子串在哪个后缀里。 求前缀和时,对于相同的子串,要在排名靠后的后缀长度中减去它,同时全部加到包含该子串的排名最靠前的后缀中。这个操作可以利用单调队列完成,既要更新一个后缀中包含的子串数目,也要同时记录每个有重复的子串长度和重复次数。二分找到包含目标子串的后缀后,用先前记录的重复子串情况,对该后缀从后向前逐位找到目标子串右端点。 稍微注意一下long原创 2020-08-14 20:30:32 · 209 阅读 · 0 评论 -
[洛谷P3181][HAOI2016]找相同字符(后缀数组)
把两个字符串连起来,后缀数组求出height数组后用单调栈维护。记录排名i的后缀的height可以向前延伸到最远时,其间l[i]个后缀属于字符串1,r[i]个后缀属于字符串2。后缀i每弹出一个栈内元素,贡献为当前的l[i]*r[i]再乘弹出元素与前一个栈内元素的差或与height[i]的差的最小值。注意后缀i的l和r数组初始值应由后缀i-1属于哪个字符串决定。 #include<cstd...原创 2019-04-08 21:51:16 · 160 阅读 · 0 评论