疯狂匹配题解

首先我们可以求出从每个L开始匹配,失配前最后一个匹配的位置,这个位置+1就是下一次匹配开始的位置,并且记录下来。
这一步用二分+哈希即可。
有了上面求的这个东西,我们就可以倍增了,用ST表存下L出发走2的次幂步能到的最后一个位置。
对于每一个询问,直接用倍增数组跳就好了。
这样记录从0出发的次数也很容易,就相当于是失配次数。
至于结束位置,可以用哈希+map来存储。
最终总复杂度为O(qlogm)

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务