
FFT
huanzhizun
这个作者很懒,什么都没留下…
展开
-
hdu 4609 3-idiots (FFT)
被每个长度生成一个函数,个数作为系数,然后FFT一下,然后把每条边作为最长边算一下,注意减去他不是最长边的情况。#include#include#include#include#includeusing namespace std;const int maxn=220005;const double eps(1e-8);typedef long long LL;const d原创 2016-06-01 08:39:13 · 314 阅读 · 0 评论 -
codechef Prime Distance On Tree FFT
先树分治,对于每个点为根处理一下,然后对这个点的子树构成的多项式平方一下求一下素数个数即可。#include#include#include#include#include#includeusing namespace std;const int maxn=100005;const double eps(1e-8);typedef long long LL;const do原创 2016-06-01 16:53:02 · 404 阅读 · 0 评论 -
hdu 5751 Eades FFT(BC Round 84 E)
我们可以用优先队列什么的随便搞搞,但是由于连续的需要枚举个数,所以复杂度是n^2的,但是呢我们发现用twopoint时移动相当于一个卷积,一直一个从前往后,一个从后往前,然后这个问题就解决了。#include#include#include#include#include#includeusing namespace std ;typedef long long LL ;con原创 2016-07-24 14:28:51 · 583 阅读 · 0 评论 -
hdu 5730 Shell Necklace(2016多校第一场)FFT+分治
dp[i]=sigma(dp[j]*a[i-j])具有多项式形式可以考虑fft,但是直接会T,考虑cdq分治,每次分治时跑fft即可#include #include#include#include#includeusing namespace std ;typedef long long LL ;#define clr( a , x ) memset ( a , x ,原创 2016-07-20 15:13:14 · 1806 阅读 · 0 评论 -
Codeforces Round #270 G. Design Tutorial: Increase the Constraints 分块+FFT
我们如果要求两个串的哈密顿距离我们可以这样把第二个串反向,然后字母为1的地方系数为1,字母为0的系数为-1,所以我们可以算出x-y=a[n-1](x是相同的点数,y是不同的点数)有因为x+y=n所以y=(n-a[n-1])/2,所以我们可以用多项式求出a[n-1]即可,这可以用FFT实现,然后对于原题我们只需要把A分块,对于每块与B串FFT一下保存一下答案即可。注意sqrt分块会超时,因为FF原创 2016-08-11 10:55:28 · 649 阅读 · 0 评论 -
hdu 5829 Rikka with Subset (2016多校第八场1009) FFT
公式非常好求,我们只需要求每个点第k大的时候的贡献,排好序后第二个元素的贡献zuhe(i-1,k-1)*a[i]*2^(n-i),我们观察可知(i-1)!*a[i]*2^(n-i)是不变的,1/k!每次都一样也很容易所以就剩下1/(i-k)!,我们用b[i]/(i-k)!表示我们注意到把i-k倒过来变成(n-i+k)然后(n-i+k+i)=n+k所以这可以用FFT处理,注意要取模。#inclu原创 2016-08-12 20:35:32 · 943 阅读 · 0 评论