FFT
文章平均质量分 56
stduy_ing
这个作者很懒,什么都没留下…
展开
-
洛谷 P6300 悔改(FFT)
链接:洛谷 P6300 悔改 题意: 思路: 取min类型的卷积到普通乘法卷积的转化: 具体参考下面大佬的博客:洛谷 P6300 悔改题解 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e6 + 5; const double Pi = acos(-1.0); int r[maxn]; int T, n , m , k ,d[maxn] , vis[maxn]原创 2021-11-02 10:42:07 · 181 阅读 · 0 评论 -
Codeforces 528 D. Fuzzy Search (FFT)
链接:D. Fuzzy Search 题意: 给出一个母串S和一个模板串T,求模板串在母串中的匹配次数。 匹配时,如果用s[i]匹配t[j],那么只要s[i-k]-s[i+k]中有字母与t[j]相同即可算作匹配成功。 思路: 对于普通的字符串匹配,我们考虑每一个字符,只要把模板串倒过来,两个串中是该字符的位置设置为 1 ,跑一次 FFT , 求出每一个字符对模板穿移动 i 位的贡献,如果所有字母的贡献 如果等于模板串的长度,答案就+1. 对于此题,如果母串中第 i 位为该字符,那么我们就把 [i - k原创 2021-10-13 21:54:39 · 177 阅读 · 0 评论 -
Codeforces 827 E. Rusty String(FFT + 字符串 + FFT的一个小优化)
链接:E. Rusty String 题意: 给出一个字符串,只包含三种字符 V, K , ?。? 可以替换为 V 或 K,求字符串可能的周期有哪些。 思路: 对于该字符串,如果所有的字符往右移动 t 位后都与原来相同 , 那么它就可以以 t 为周期。所以我们对于每一个字符都计算出右移后与原来形同的步数 , 也就是所有相同字符之间位置的两两之差,可以用FFT求出 。 如果最后所有字符都可以移动 k 位与原来形同,k就可能是周期。但这里存在问号,可能存在一种情况 Si≠Si+2tS_i\ne S_{i+2t原创 2021-07-28 20:26:05 · 218 阅读 · 0 评论 -
HDU 6975 Forgiving Matching (FFT + 字符串匹配)
链接:Forgiving Matching 题意: 给出两个字符串 S , T。长度分别为n , m(1≤m≤n≤2000001\leq m \leq n\leq 2000001≤m≤n≤200000),现定义两字符串的 ans[k]为 :字符串S中包含多少个子串与T相似(相似的定义为两字符串最多k个位置不同)。现要求出所有的 ans[k] (0≤k≤m0\leq k \leq m0≤k≤m)。 思路: 我们先来考虑如何暴力求解 , 如果我们固定 S 串,让T串往右匹配S的每一个子串 , 如果在匹配当前子原创 2021-07-28 15:25:10 · 360 阅读 · 0 评论 -
2021牛客暑期多校训练营1 H Hash Function (FFT + 数学)
链接:H Hash Function 题意: 给定一个长度为 n (n≤500000n\leq 500000n≤500000) 的数组 a,数组中元素互不相同 , 现要求出一个最小的 x , 使得所有的数模 x后仍互不相同。 思路: 根据同余定理,这个数 x 肯定不能是数组a中任意两个数的差值和他们的因子。所以我们要求出数组中所有数两两之间的差值,如果直接求肯定要o(n2n^2n2),可以用 FFT 加速这个过程。 FFT本身是求出两个多项式相乘后的系数,那么怎么用它来求数组a中两两的差有哪些呢。假设我们原创 2021-07-27 22:06:53 · 157 阅读 · 0 评论