这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
2020-2021:teams:wangzai_milk:fft_的一些奇妙用法 [2020/08/21 13:22] wzx27 |
2020-2021:teams:wangzai_milk:fft_的一些奇妙用法 [2020/08/21 13:23] (当前版本) wzx27 |
||
---|---|---|---|
行 103: | 行 103: | ||
两个平方项都可以通过前缀和得到。乘积项转换一下就会变成一个卷积的形式:把 $s$ 串翻转一下得到 $rs$ 串,于是乘积项就是 $\sum _{i=0}^{m-1} 2\cdot rs_{m-i-1} \cdot t_{x-m+i+1} = \sum _{i=0}^{m-1} 2\cdot rs_i \cdot t_{x-i}$。所以这里就可以用$\text{FFT}$处理的到。 | 两个平方项都可以通过前缀和得到。乘积项转换一下就会变成一个卷积的形式:把 $s$ 串翻转一下得到 $rs$ 串,于是乘积项就是 $\sum _{i=0}^{m-1} 2\cdot rs_{m-i-1} \cdot t_{x-m+i+1} = \sum _{i=0}^{m-1} 2\cdot rs_i \cdot t_{x-i}$。所以这里就可以用$\text{FFT}$处理的到。 | ||
- | 最后的判断条件:卷积之后的多项式为 $f(x)$,在 $t$ 串的 $x0$ 位置匹配当且仅当 $f(x) + pres[m-1] + pret[x] - pret[x-m-2] = 0$。总复杂度为 $O(nlogn)$。 | + | 最后的判断条件:卷积之后的多项式为 $f(x)$,在 $t$ 串的 $x$ 位置匹配当且仅当 $f(x) + pres[m-1] + pret[x] - pret[x-m-2] = 0$。总复杂度为 $O(nlogn)$。 |
虽然 $\text{FFT}$ 多了一个 $log$ 的复杂度,但有些匹配是 $\text{KMP}$ 无法做但是 $\text{FFT}$ 可以做。 | 虽然 $\text{FFT}$ 多了一个 $log$ 的复杂度,但有些匹配是 $\text{KMP}$ 无法做但是 $\text{FFT}$ 可以做。 | ||
行 218: | 行 218: | ||
} | } | ||
</code> </hidden> | </code> </hidden> | ||
+ | \\ | ||
[[https://codeforces.com/problemset/problem/1334/G|CF1334G]] | [[https://codeforces.com/problemset/problem/1334/G|CF1334G]] | ||
行 340: | 行 340: | ||
} | } | ||
</code> </hidden> | </code> </hidden> | ||
+ | \\ |