码迷,mamicode.com
首页 > 其他好文 > 详细

FFT与字符串

时间:2019-10-15 19:03:39      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:字符串   标准   class   splay   isp   字符   row   tar   位置   

有的题目十分毒瘤,会让我们求一个字符串中有多少满足某些性质,这个时候显然SAM等无能为力,可能需要使用FFT来进行统计(当然也有可能是乱搞)。

基本思想

以字符串匹配为例进行一些解释。

现在我们有两个字符串 \(S,T\) ,长度分别为 \(n,m\) ,求 \(T\)\(S\) 中匹配上的各个位置的起点。

首先有显然性质 \(S[i,i+m)=T\Leftrightarrow \sum_{j=0}^{m-1}(S_{i+j}-T_j)^2=0\) 。然后对每一个 \(i\) 都这么做:

\[ \sum_{i=0}^{n-m}\sum_{j=0}^{m-1} (S_{i+j}-T_j)^2=\sum_{i=0}^{n-m}\sum_{j=0}^{m-1}(S_{i+j}^2+T_j^2+2S_{i+j}\ast T_j) \]

目前这个还不是标准卷积形式,但是我们只要令 \(t_i=T_{m-1-i}\) ,上式就可以写成:

\[ \sum_{i=0}^{n-m}\sum_{j=0}^{m-1}(S_{i+j}^2+t_{m-1-j}^2+2S_{i+j}\ast t_{m-1-j}) \]

这就好了,可以用FFT。

例题

重复的东西就不必再写一遍了。

看CF954I。

FFT与字符串

标签:字符串   标准   class   splay   isp   字符   row   tar   位置   

原文地址:https://www.cnblogs.com/pupuvovovovo/p/11679386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!