FFT板子
woc......FFT这玩意儿真坑......
一上午除了打了几遍板子什么也没干......真是废了......
你要加油啊......
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- using namespace std;
- const int maxn=;
- const double pi=acos(-1.0),eps=1e-;
- struct Complex{
- double a,b;
- Complex(double a=0.0,double b=0.0):a(a),b(b){}
- Complex operator+(const Complex &x)const{return Complex(a+x.a,b+x.b);}
- Complex operator-(const Complex &x)const{return Complex(a-x.a,b-x.b);}
- Complex operator*(const Complex &x)const{return Complex(a*x.a-b*x.b,a*x.b+b*x.a);}
- }A[maxn],B[maxn];
- void FFT(Complex*,int,int);
- int n,m,N=;
- int main(){
- scanf("%d%d",&n,&m);
- n++;m++;
- while(N<n+m)N<<=;
- for(int i=;i<n;i++)scanf("%lf",&A[i].a);
- for(int i=;i<m;i++)scanf("%lf",&B[i].a);
- FFT(A,N,);
- FFT(B,N,);
- for(int i=;i<N;i++)A[i]=A[i]*B[i];
- FFT(A,N,-);
- for(int i=;i<n+m-;i++)printf("%d ",(int)(A[i].a+eps));
- return ;
- }
- void FFT(Complex *A,int n,int tp){
- for(int i=,j=;i<n-;i++){
- int k=N;
- do{
- k>>=;
- j^=k;
- }while(j<k);
- if(i<j)swap(A[i],A[j]);
- }
- for(int k=;k<=n;k<<=){
- Complex wn(cos(-tp**pi/k),sin(-tp**pi/k));
- for(int i=;i<n;i+=k){
- Complex w(1.0,0.0);
- for(int j=;j<(k>>);j++,w=w*wn){
- Complex a(A[i+j]),b(w*A[i+j+(k>>)]);
- A[i+j]=a+b;
- A[i+j+(k>>)]=a-b;
- }
- }
- }
- if(tp<)for(int i=;i<n;i++)A[i].a/=n;
- }
挖个大坑:
FFT板子的更多相关文章
- maomao的fft板子
\(QwQ\) #include <cmath> #include <cstdio> #include <cstring> #include <iostrea ...
- 高精乘(fft板子
哇..fft的原理真的是不太好懂,看了好久许多细节还是不太清楚,但感觉本质就是用了单位根的性质. https://www.luogu.org/problem/P1919 #include<cst ...
- FFT && NTT板子
贴板子啦-- FFT板子:luogu P3803 [模板]多项式乘法(FFT) #include<cstdio> #include<iostream> #include< ...
- 卷积FFT、NTT、FWT
先简短几句话说说FFT.... 多项式可用系数和点值表示,n个点可确定一个次数小于n的多项式. 多项式乘积为 f(x)*g(x),显然若已知f(x), g(x)的点值,O(n)可求得多项式乘积的点值. ...
- bzoj 4332 FFT型的快速幂(需要强有力的推导公式能力)
有n个小朋友,m颗糖,你要把所有糖果分给这些小朋友. 规则第 i 个小朋友没有糖果,那么他之后的小朋友都没有糖果..如果一个小朋友分到了 xx 个糖果,那么的他的权值是 f(x) = ox^2 + ...
- 【FFT】hdu1402 A * B Problem Plus
FFT板子. 将大整数看作多项式,它们的乘积即多项式的乘积在x=10处的取值. #include<cstdio> #include<cmath> #include<cst ...
- noip前打板子 qwq
在某咕上打了一晚上的模板 感觉还好... #include<bits/stdc++.h> #define LL long long using namespace std; inline ...
- UVa12298(生成函数的简单应用+FFT)
I have a set of super poker cards, consisting of an infinite number of cards. For each positive compo ...
- BZOJ 2179 FFT模板
思路:FFT板子题 //By SiriusRen #include <cstdio> #include <complex> using namespace std; typed ...
随机推荐
- mysql 快照读MVCC
mysql的读分快照读和当前读 快照读 是指写的同时,读不阻塞,达到并发的作用 这时候的读 是 记录的历史版本,存在于undo里,当然回滚时就的也是这个undo 当执行一条update语句时,记录本身 ...
- P3366 (模板)最小生成树
2019-01-30 最小生成树基本算法 定义: 给定一个边带权的无向图G=(V,E),n=|V|,m=|E|,由V中全部n个定点和E中n-1条边构成的无向连通子图被称为G的一颗生成树. 边的权值之和 ...
- simulate UE activity
can: 1,connect, disconnect 2,configure serial,nic,com,model,version,IMEI,IMSI,IP 3,various AT comman ...
- 彻底成功配置Maven和Eclipse集成
这篇文章是分享给还在苦苦挣扎eclipse和Maven环境配置的同志,让其少走弯路,话不多说,直接开始吧 环境出问题一是配置没有配置好,二是各个部分可能出现兼容问题,导致错误,综上,我选择了一个切实可 ...
- find命令用法集锦
find命令用法: 01--过滤日志find -name "catelina.*.out"|xargs -f |grep '关键字' 02 -忽略一个目录或者多个目录find ./ ...
- 红米手机3S 3X简单卡刷开发版获得ROOT权限的方法
小米的机器不同手机型号一般小米论坛都提供两个不同的系统,即分别是稳定版和开发版,稳定版没有提供root权限管理,开发版中就支持了root权限,很多情况下我们需要使用的一些功能强大的APP,都需要在ro ...
- Linux安装python3.6.3
一: (1)wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz 下载安装包 (可以到网站下载,然后上传到Linux) (2)ta ...
- 生成随机32位Token43位asekey
// 生成随机32位Token字符和43位AseKey var arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', ' ...
- pip升级最新版本
1.如果是python2.7输入以下指令 python -m pip install --upgrade pip 2.如果是python 3.+输入以下指令 python3 -m pip instal ...
- Ubuntu 16.04安装SecureCRT替代XShell
XShell应该是最强大的,在Ubuntu下只有SecureCRT能实现跨平台(Linux/Windows/Mac),并且可以实现Tab的功能等.当然,还有其它的类似PuTTY这些.Windows下建 ...