![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FFT/NTT
文章平均质量分 64
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
[UOJ#34]多项式乘法(FFT)
题目描述传送门题解FFT模板题代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 300005const double pi=acos(-1.0);int n,m,L,R[N];struct comple原创 2017-03-09 11:21:58 · 467 阅读 · 0 评论 -
[BZOJ2259]异化多肽(生成函数+NTT+多项式求逆)
题目描述传送门题目大意:有M种氨基酸,每个的相对分子质量为Ci,问组合出的肽链水解之后有多少个相对分子质量和为N(排列)。题解选的氨基酸的数量不限。 一个比较显然的思路是对于每一种氨基酸搞一个生成函数出来,也就是x^(Ci的倍数)项的系数为1,然后把M个卷起来就行了 但是这样复杂度是O(MNlogN)O(MNlogN)的,并且没法加速换一种思路… 将所有的氨基酸搞成一个生成函数,x^k的系数为原创 2017-04-26 17:30:42 · 1069 阅读 · 0 评论 -
[BZOJ3771]Triple(生成函数+FFT+容斥原理)
题目描述传送门题目大意:给出n个互不相同的数,问从中选出1/2/3个数,每一个可以组合出的和有多少种方案。题解首先1个的直接统计 将所有的数搞成一个生成函数,做一遍卷积搞出来选2个的答案 但是2个的存在选了两个相同的,或者选了一个排列,直接除2即可 然后生成函数卷两次统计选3个的答案 这里需要容斥一下,(选3个的答案-强行选了2个一样的*3+强行选了3个一样的*2)/6才是不考虑顺序、选不重原创 2017-04-25 23:23:30 · 928 阅读 · 0 评论 -
[BZOJ4555][Tjoi2016&Heoi2016]求和(NTT)
题目描述传送门题目大意: 求f(n)=∑ni=0∑ij=0S(i,j)×2j×(j!)f(n)=\sum_{i=0}^n\sum_{j=0}^iS(i,j)\times 2^j\times (j!) 其中S(i,j)S(i,j)为第二类斯特林数,递推公式为: S(i,j)=j×S(i−1,j)+S(i−1,j−1),1≤j≤i−1S(i, j) = j\times S(i − 1, j) +原创 2017-04-24 21:23:00 · 1138 阅读 · 0 评论 -
[BZOJ3160]万径人踪灭(FFT+manacher)
题目描述传送门题目大意:在一个只含ab的字符串中选取一个子序列,使得:1、字符和下标都关于一个中心对称2、不能是连续的一段。求方案数。题解这题我的方法好蠢啊→_→ 首先容斥一下,答案=所有子序列的方案数-回文子串的数量 由于回文的连续子序列一定满足下标对称,所以可以直接用manacher求出回文子串的数量 然后就是统计所有子序列的方案数的问题了 将a和b分开考虑,f(i)和g(i)表示当前这原创 2017-04-24 14:37:35 · 808 阅读 · 0 评论 -
[BZOJ4259]残缺的字符串(FFT)
题目描述传送门题目大意:给出一个模板串和一个母串,问模板串在母串中出现过几次。带通配符。题解这道题和两个串那道题是差不多的。。 令F(i)表示将模板串的最后一个怼到母串的第i个是否能匹配,0表示能匹配,非0表示不能匹配。然后设两个函数f(i)=(t(i)=‘ * ’)?0:t(i),g(i)=(s(i)=‘ * ’)?0:s(i) 将模板串倒置了之后显然F(i)=∑j=0S−1f(i−j)g(j原创 2017-04-24 10:40:06 · 834 阅读 · 0 评论 -
[Codeforces528D]Fuzzy Search(FFT)
题目描述传送门题解将A,G,C,T分开考虑,统计4遍,答案相加 令F(i)F(i)表示将小串的最后一个怼到大串的第i位最多能匹配多少个 令f(i)f(i)表示大串中,第i个字符是否能匹配当前字符0/1 令g(i)g(i)表示小串中,第i个字符是否是当前字符0/1 将小串反置,然后F(i)F(i)可以表示成卷积的形式F(i)=∑i=0|T|−1f(i−j)g(j)F(i)=\sum\limit原创 2017-03-09 17:00:56 · 735 阅读 · 0 评论 -
[BZOJ3513][MUTC2013]idiots(FFT+组合数学)
题目描述传送门题目大意:给定n个长度分别为ai的木棒,问随机选择3个木棒能够拼成三角形的概率。题解这道题要根据三角形的两边之和大于第三边来做,其实判定的条件就是随机选出来的三条边中较小的两条之和大于第三条边 首先容斥一下,用总的方案数减去不合法的方案数 令F(i)表示两条边和为i的方案数,a(i)表示长为i的木棒有多少个,那么可以写成一个卷积的形式F(i)=∑a(i−j)a(j)F(i)=\su原创 2017-05-04 15:35:10 · 1056 阅读 · 4 评论 -
[BZOJ3992][SDOI2015]序列统计(dp+NTT+快速幂)
题目描述传送门题解首先考虑,如果题目让求的是和的方案数,怎么dp以及优化 令F(i,j)F(i,j)表示一共选了i个数,和在模m意义下为j的方案数 那么F(i,j)=∑k=1sF(i−1,j−Sk)F(i,j)=\sum\limits_{k=1}^sF(i-1,j-S_k) 这个dp可以写成卷积的形式并用NTT优化 令b(i)b(i)表示是否存在i这个数,0/1 令aa表示F(i−1)F(原创 2017-03-10 11:04:10 · 738 阅读 · 0 评论 -
[COGS2287][HZOI 2015]疯狂的机器人(NTT+组合数学)
题目描述传送门题解本来是想找一道题想一想dp到底是怎么用FFT优化的,然而写完了发现怎么和dp没啥关系呢 也可能是我太弱根本没看出来dp 不过确实是一道好题!在hxy神犇的一些提示下做出来…令g(i)g(i)表示只能上下走,不能左右走,不能不走,走i步最后回到原点的方案数 首先可以发现当i为奇数的时候g(i)g(i)一定为0 接着考虑i为偶数的情况,很显然向上走的步数和向下走的步数一定相等,原创 2017-03-09 21:50:01 · 844 阅读 · 0 评论 -
[BZOJ4503]两个串(FFT)
题目描述传送门题解受到上一道题的影响,这题想了很久… 因为这题的思路和上题真的是相似又互异的 令F(i)F(i)表示把小串结尾怼到大串的第i个字符上是否能匹配,0表示能匹配,非0表示不能匹配 对于大串,f(i)=s(i)f(i)=s(i),对于小串,g(i)=(s(i)=′?′)?0:s(i)g(i)=(s(i)='?')?0:s(i),也就是说,将通配符的权赋为0,其余的直接赋为自己的权值原创 2017-03-09 18:34:36 · 516 阅读 · 0 评论 -
[BZOJ3527][Zjoi2014]力(FFT)
题目描述传送门题解将式子化一下可以得出E(i)=∑j=0iqj(i−j)2−∑j=inqj(i−j)2E(i)=\sum\limits_{j=0}^i{q_j\over(i-j)^2}-\sum\limits_{j=i}^n{q_j\over(i-j)^2} 只考虑第一个式子,令f(n)=qn,g(n)=1n2f(n)=q_n,g(n)={1\over n^2},那么E(i)=∑j=原创 2017-03-09 16:53:34 · 635 阅读 · 0 评论 -
[BZOJ2194]快速傅立叶之二(FFT)
题目描述传送门题解度娘 卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列x(n)和h(n),则卷积的结果y(n)=∑i=−∞+∞x(i)h(n−i)=x(n)∗h(n)y(n)=\sum\limits_{i=-\infty}^{+\infty}x(i)h(n-i)=x(n)*h(n) 卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积。即,一个域中的卷积相当于另一个域中的乘积原创 2017-03-09 11:34:06 · 641 阅读 · 0 评论 -
[BZOJ2179]FFT快速傅立叶(FFT)
题目描述传送门题解将乘法的每一位看成是多项式的系数 实际上就是两个多项式相乘 直接FFT 处理进位代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 200005const double pi=acos原创 2017-03-09 11:24:45 · 377 阅读 · 0 评论 -
[BZOJ3456]城市规划(组合数学+容斥原理+NTT+多项式求逆)
题目描述传送门题目大意:求n个点的无重边无自环无向连通图数目。题解这题好强啊。。设f(i)f(i)表示与1连通的连通块大小为i(包括1)的连通图数目 如果要是将i个点之间的2i(i−1)22^{i(i-1)\over 2}条边随便连的话会有一些不合法的方案,即有一些点和i不连通,所以这里要容斥一下 f(i)=2i(i−1)2−∑j=0i−1Cj−1i−1⋅f(j)⋅2(i−j)(i−j−1)2f原创 2017-04-26 17:48:20 · 1058 阅读 · 0 评论