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