郝神并没有令我明白这个。

但是巨神的题解太强了

#include <iostream>
#include <complex>
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;
const int N=;
const double pi=acos(-1.0);
struct complexd{
double x,y;
complexd (double xx=,double yy=){x=xx,y=yy;}
complexd operator + (const complexd &rhs) const {return complexd(x+rhs.x,y+rhs.y);}
complexd operator - (const complexd &rhs) const {return complexd(x-rhs.x,y-rhs.y);}
complexd operator * (const complexd &rhs) const {return complexd(x*rhs.x-y*rhs.y,x*rhs.y+y*rhs.x);}
};
inline int rd() {
static int x;x=;static char ch;ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) x=x*+(ch^),ch=getchar();
return x;
}
int n,m,l,r[N];
void fft(complexd *b,short tag) {
for(int i=;i<n;i++) if(i<r[i]) swap(b[i],b[r[i]]);
for(int mid=;mid<n;mid<<=) {
complexd tp(cos(pi/mid),tag*sin(pi/mid));
for(int j=;j<n;j+=mid<<) {
complexd w(,);
for(int k=;k<mid;k++,w=w*tp) {
complexd x=b[j+k],y=w*b[j+mid+k];
b[j+k]=x+y;
b[j+mid+k]=x-y;
}
}
}
}
complexd a[N],b[N];
int main() {
n=rd(),m=rd();
for(int i=;i<=n;i++) a[i].x=rd();
for(int j=;j<=m;j++) b[j].x=rd();
m+=n;
n=;
while(n<=m) n<<=,l++;
for(int i=;i<n;i++) r[i]=(r[i>>]>>)|((i&)<<(l-));
fft(a,);
fft(b,);
for(int i=;i<=n;i++) a[i]=a[i]*b[i];
fft(a,-);
for(int i=;i<=m;i++) printf("%d ",(int)(a[i].x/n+0.5));
return ;
}

FFT

[模板]FFT的更多相关文章

  1. 模板 FFT 快速傅里叶变换

    FFT模板,原理不难,优质讲解很多,但证明很难看太不懂 这模板题在bzoj竟然是土豪题,服了 #include <cmath> #include <cstdio> #inclu ...

  2. 洛谷P1919 A*B problem 快速傅里叶变换模板 [FFT]

    题目传送门 A*B problem 题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数 ...

  3. 模板—FFT

    卷积:$C[i]=\sum \limits_{j=0}^{i}A[j]*B[i-j]$可以画图理解一下其实就是交叉相乘的和. 卷积可以看作两个多项式乘积的形式,只不过求出的结果的项数不同. FFT讲解 ...

  4. $FFT/NTT/FWT$题单&简要题解

    打算写一个多项式总结. 虽然自己菜得太真实了. 好像四级标题太小了,下次写博客的时候再考虑一下. 模板 \(FFT\)模板 #include <iostream> #include < ...

  5. UOJ#34 FFT模板题

    写完上一道题才意识到自己没有在博客里丢过FFT的模板-- 这道题就是裸的多项式乘法,可以FFT,可以NTT,也可以用Karasuba(好像有人这么写没有T),也可以各种其他分治乘法乱搞-- 所以我就直 ...

  6. 多项式FFT相关模板

    自己码了一个模板...有点辛苦...常数十分大,小心使用 #include <iostream> #include <stdio.h> #include <math.h& ...

  7. 【bzoj2179】FFT快速傅立叶 FFT模板

    2016-06-01  09:34:54 很久很久很久以前写的了... 今天又比较了一下效率,貌似手写复数要快很多. 贴一下模板: #include<iostream> #include& ...

  8. FFT模板

    我终于下定决心学习FFT了. orzCHX,得出模板: #include<cstdio> #include<cctype> #include<queue> #inc ...

  9. 再写FFT模板

    没什么好说的,今天又考了FFT(虽然不用FFT也能过)但是确实有忘了怎么写FFT了,于是乎只有重新写一遍FFT模板练一下手了.第一部分普通FFT,第二部分数论FFT,记一下模数2^23*7*17+1 ...

随机推荐

  1. ios 得用代理反向传值

    应用场景:有时时候从界面A跳转到界面B,界面B在返回的时候须要将处理的结果传递给A. 实现思路:1,定义一个负责传值的协义,界面A拥有该协义属性,并实现该协义中的方法 2.界面B也拥有该协义属性(代理 ...

  2. Android 下使用opencv

    两种方式: 1.java API 2.Native/C++ 方式,OpenCV.mk中默认使用动态库的方式链接opencv,设置OPENCV_LIB_TYPE:=STATIC 以静态库方式调用 htt ...

  3. Windowns 无法启动 Office Software Protection Platform 服务,系统找不到指定的文件

    导致该服务无法启动的原因是,用kms8激活了win7后又用oem8激活试了下,结果就这样,然后就无法激活了,状态ID都不可用.试过禁用计划任务项目,重建MBR,重建PBR,都无效果.最后在这里找到了解 ...

  4. Linux系统编程——特殊进程之僵尸进程

    僵尸进程(Zombie Process) 进程已执行结束,但进程的占用的资源未被回收.这种进程称为僵尸进程. 在每一个进程退出的时候,内核释放该进程全部的资源.包含打开的文件.占用的内存等. 可是仍然 ...

  5. 【字符串处理】AC自动机知识点&代码

    代码: #include<iostream> #include<vector> #include<cstdio> #include<queue> #in ...

  6. 【辨异】—— 可见 vs. 不可见

    1. 常见对比 物理可见,逻辑不可见: 效果可见: 对于一个文档,字符.图形可见,行.列.页呀等结构化的元素,不可见,它们各是一种逻辑组织与安排: 观念(思维方式,看待事情的方式)是不可见的,但行为是 ...

  7. 【BZOJ 1572】 工作安排

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1572 [算法] 贪心 先将这些工作按截至时间排序 建立一个小根堆,当决策是否完成一项 ...

  8. [SDOI2007]游戏

    https://zybuluo.com/ysner/note/1184420 题面 题意简单,但不太好概括. 戳我 解析 不成熟想法 据题意可知,字符串字符的顺序无影响. 并且判断两个字符串能否接龙可 ...

  9. 杂项-Java:标签库

    ylbtech-杂项-Java:标签库 1.返回顶部 1. JSP标签库,也称自定义标签库,可看成是一种通过JavaBean生成基于XML的脚本的方法.从概念上讲,标签就是很简单而且可重用的代码结构. ...

  10. Prime Path(bfs)

    http://poj.org/problem?id=3126 题意:给两个四位数n,m,将n变成m需要多少步,要求每次只能改变n的某一位数,即改变后的数与改变前的数只有一位不同,且每次改变后的数都是素 ...