FFT
Bahuia
软件工程博士
展开
-
HDU - 1408 FFT模板题
题意:两个大数相乘。思路:这题是典型的FFT。所谓FFT,也就是快速傅里叶变换,是一种加速两个多项式系数相乘的算法,可以通过插值表示多项式的思想,将多项式从系数形式转化成点值形式,点值形式的多项式相乘只需要O(n),而FFT的关键就在于点值形式和系数形式之间的相互转化,可以利用分治的思想达到O(logn)的复杂度。关于FFT的详细推导可以学习算法导论第30章。一个题目如果需原创 2017-03-20 20:44:04 · 889 阅读 · 0 评论 -
HDU - 5730 CDQ分治 + FFT
题意:有一串长度为n的序列,可以任意划分,题目给出长度从1到n的块的价值,每一种划分的价值等于划分出来的所有块的价值的乘积,问所有划分方法得到的价值的总和是多少?思路:这题很容易就能得到状态转移方程,设dp[i]是长度为i的序列的价值总和,那么就有状态转移方程:然而计算这样的状态转移需要花费O(n^2)的时间,不能满足要求。注意观察到这是一个离散卷积形式,可以用FFT来加速原创 2017-03-21 14:15:31 · 509 阅读 · 0 评论 -
HDU 5552 CDQ分治+NTT
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5829 统计n个点可以组成多少种不同的有环连通图,其中每条边可以染成m种颜色。思路:分别统计f(n)为n个点的连通图数目,g(n)为n个点能构成的图数目,h(n)为n个点能构成的树的数目,然后递推出公式,发现是个卷积形式,可以用FFT加速,这里会爆精度,改用NTT。代码:#include <bit原创 2017-09-27 09:30:07 · 900 阅读 · 0 评论 -
HDU 5896 CDQ分治+NTT
题意:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5829 求n个点能构成的有环图的数目。思路:母题是HDU 5552:http://blog.csdn.net/Bahuia/article/details/78109301 两题思路一致,只是改变了所求结果,推导发生变化。代码:#include <bits/stdc++.h>using nam原创 2017-09-27 09:34:01 · 590 阅读 · 0 评论 -
HDU - 4609 FFT
题意:给出n个长度,要求任意选择3个长度,能组成三角形的概率。思路:这也是一种常见的FFT题型,初看这个可能很难和FFT能解决的多项式联系到一起。首先既然要组成三角形,一定要保证两边之和大于第三边,那么我们可以枚举一条边为x,然后看不超过x的两边之和一共有多少情况,这个很容易,只要求出来两边之和==0,1,..Max的种类数,然后用一个前缀和保存就行了。现在关键是怎么对于任意一原创 2017-03-20 21:25:28 · 448 阅读 · 0 评论