题目:https://www.luogu.org/problemnew/show/P3803

终于学了FFT了!

参考博客:https://www.cnblogs.com/zwfymqz/p/8244902.html

http://www.cnblogs.com/RabbitHu/p/FFT.html

代码如下:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. using namespace std;
  7. typedef double db;
  8. int const xn=(<<);//*2 n+m
  9. db const Pi=acos(-1.0);
  10. int n,m,rev[xn],lim;
  11. struct com{db x,y;}a[xn],b[xn];
  12. com operator + (com a,com b){return (com){a.x+b.x,a.y+b.y};}
  13. com operator - (com a,com b){return (com){a.x-b.x,a.y-b.y};}
  14. com operator * (com a,com b){return (com){a.x*b.x-a.y*b.y,a.x*b.y+b.x*a.y};}
  15. int rd()
  16. {
  17. int ret=,f=; char ch=getchar();
  18. while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
  19. while(ch>=''&&ch<='')ret=(ret<<)+(ret<<)+ch-'',ch=getchar();
  20. return f?ret:-ret;
  21. }
  22. void fft(com *a,int tp)
  23. {
  24. for(int i=;i<lim;i++)
  25. if(i<rev[i])swap(a[i],a[rev[i]]);
  26. for(int mid=;mid<lim;mid<<=)//mid<lim
  27. {
  28. com wn=(com){cos(Pi/mid),tp*sin(Pi/mid)};
  29. for(int j=,len=(mid<<);j<lim;j+=len)
  30. {
  31. com w=(com){,};
  32. for(int k=;k<mid;k++,w=w*wn)
  33. {
  34. com x=a[j+k],y=w*a[j+mid+k];
  35. a[j+k]=x+y;
  36. a[j+mid+k]=x-y;
  37. }
  38. }
  39. }
  40. }
  41. int main()
  42. {
  43. n=rd(); m=rd();
  44. for(int i=;i<=n;i++)a[i].x=rd();
  45. for(int i=;i<=m;i++)b[i].x=rd();
  46. lim=; int l=;
  47. while(lim<=n+m)lim<<=,l++;
  48. for(int i=;i<lim;i++)
  49. rev[i]=(rev[i>>]>>)|((i&)<<(l-));
  50. fft(a,); fft(b,);
  51. for(int i=;i<lim;i++)a[i]=a[i]*b[i];
  52. fft(a,-);
  53. for(int i=;i<=n+m;i++)
  54. printf("%d ",(int)(a[i].x/lim+0.5)); puts("");
  55. return ;
  56. }

洛谷 P3803 多项式乘法(FFT) —— FFT的更多相关文章

  1. [uoj#34] [洛谷P3803] 多项式乘法(FFT)

    新技能--FFT. 可在 \(O(nlogn)\) 时间内完成多项式在系数表达与点值表达之间的转换. 其中最关键的一点便为单位复数根,有神奇的折半性质. 多项式乘法(即为卷积)的常见形式: \[ C_ ...

  2. 洛谷 P3803 多项式乘法

    题目背景 这是一道FFT模板题 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: 第一行2个正整数n,m. 接下来一行n+1 ...

  3. FFT/NTT总结+洛谷P3803 【模板】多项式乘法(FFT)(FFT/NTT)

    前言 众所周知,这两个东西都是用来算多项式乘法的. 对于这种常人思维难以理解的东西,就少些理解,多背板子吧! 因此只总结一下思路和代码,什么概念和推式子就靠巨佬们吧 推荐自为风月马前卒巨佬的概念和定理 ...

  4. 洛谷P3803 【模板】多项式乘法(FFT)

    P3803 [模板]多项式乘法(FFT) 题目背景 这是一道FFT模板题 题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: ...

  5. 洛谷 P3803 【模板】多项式乘法(FFT)

    题目链接:P3803 [模板]多项式乘法(FFT) 题意 给定一个 \(n\) 次多项式 \(F(x)\) 和一个 \(m\) 次多项式 \(G(x)\),求 \(F(x)\) 和 \(G(x)\) ...

  6. 洛谷p3803 FFT入门

    洛谷p3803 FFT入门 ps:花了我一天的时间弄懂fft的原理,感觉fft的折半很神奇! 大致谈一谈FFT的基本原理: 对于两个多项式的卷积,可以O(n^2)求出来(妥妥的暴力) 显然一个多项式可 ...

  7. 【luogu P3803】【模板】多项式乘法(FFT)

    [模板]多项式乘法(FFT) 题目链接:luogu P3803 题目大意 给你两个多项式,要你求这两个多项式乘起来得到的多项式.(卷积) 思路 系数表示法 就是我们一般来表示一个多项式的方法: \(A ...

  8. 多项式乘法(FFT)模板 && 快速数论变换(NTT)

    具体步骤: 1.补0:在两个多项式最前面补0,得到两个 $2n$ 次多项式,设系数向量分别为 $v_1$ 和 $v_2$. 2.求值:用FFT计算 $f_1 = DFT(v_1)$ 和 $f_2=DF ...

  9. 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题

    洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...

随机推荐

  1. hdu1827之强联通

    Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  2. php.ini的载入位置

    php.ini文件找不到,载入WINDOS下的,但找不到,后来强制-c查找是OK的.思考,为什么载入window下的ini文件.1.可能是有一个默认路径.2.可能没有路径.默认载入. 问题解决:htt ...

  3. vue2.0 自定义 侧滑删除(LeftSlider)组件

    1.自定义侧滑删除组件 LeftSlider.vue <!-- 侧滑删除 组件 --> <template> <div class="delete"& ...

  4. mysql:“Access denied for user 'root@IP地址'"

    请仔细.再仔细确认你的用户名.密码.IP是否有误!   可悲的我老犯这种低级错误,以为用户没权限访问,唉..

  5. 安卓UI适配限定符

    引言 对于程序在不同尺寸的Android机器上执行,对UI的适用性造成了额外的开销,只是限定符的出现,非常方便的攻克了这个问题.通过创建限定符相关的文件夹来解决资源的载入. 限定符用处 限定符(mdp ...

  6. Spark 性能相关參数配置具体解释-shuffle篇

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 随着Spark的逐渐成熟完好, ...

  7. C++卷积神经网络实例:tiny_cnn代码具体解释(7)——fully_connected_layer层结构类分析

    之前的博文中已经将卷积层.下採样层进行了分析.在这篇博文中我们对最后一个顶层层结构fully_connected_layer类(全连接层)进行分析: 一.卷积神经网路中的全连接层 在卷积神经网络中全连 ...

  8. paxos算法之粗浅理解

    paxos出身 paxos出身名门,它爹是没多久前获得图灵奖的在分布式领域大名鼎鼎的LeslieLamport. paxos为何而生 那么Lamport他老人家为什么要搞这个东东呢,不是吃饱了撑的,而 ...

  9. Android UI经常使用实例 怎样实现欢迎界面(Splash Screen)

    在Android平台下.下载一个应用后,首次打开映入眼帘的便是Splash Screen,暂且不说Android的设计原则提不提倡这样的Splash Screen.先来看看一般使用Splash Scr ...

  10. 有趣的Ruby-学习笔记3

    Ruby方法 方法名要以小写字母开头.假设用大写字母开头会被作为常量 (这点非常奇怪) 定义一个无參的方法 def method_name expr.. end 定义一个有參的方法 def metho ...