https://www.luogu.org/problem/show?pid=3803

题目背景

这是一道模版题

题目描述

给定一个n次多项式F(x),和一个m次多项式G(x)。

请求出F(x)和G(x)的卷积。

输入输出格式

输入格式:

第一行2个正整数n,m。

接下来一行n+1个数字,从低到高表示F(x)的系数。

接下来一行m+1个数字,从低到高表示G(x))的系数。

输出格式:

一行n+m+1个数字,从低到高表示F(x)∗G(x)的系数。

输入输出样例

输入样例#1:

  1. 1 2
  2. 1 2
  3. 1 2 1
输出样例#1:

  1. 1 4 5 2

说明

保证输入中的系数大于等于 0 且小于等于9。

总共14组测试数据。

对于第1-4组数据:n<=5000,m<=5000,20pts,0.5s。

对于第5-10组数据:n<=300000,m<=300000,60pts,1s。

对于第11-14组数据:n<=1000000,m<=1000000,20pts,2s。

数据有一定梯度。

空间限制:256MB

  1. #include<cstdio>
  2. #include<cmath>
  3. #include<complex>
  4. using namespace std;
  5. #define N 2600001
  6. using namespace std;
  7. const double pi=acos(-);
  8. typedef complex<double> E;
  9. int n,m,l,r[N];
  10. E a[N],b[N];
  11. int read()
  12. {
  13. int x=; char c=getchar();
  14. while(c<''||c>'') c=getchar();
  15. while(c>=''&&c<='') { x=x*+c-''; c=getchar(); }
  16. return x;
  17. }
  18. void fft(E *a,int f)
  19. {
  20. for(int i=;i<n;i++)
  21. if(i<r[i]) swap(a[i],a[r[i]]);
  22. for(int i=;i<n;i<<=)
  23. {
  24. E wn(cos(pi/i),f*sin(pi/i));
  25. for(int p=i<<,j=;j<n;j+=p)
  26. {
  27. E w(,);
  28. for(int k=;k<i;k++,w*=wn)
  29. {
  30. E x=a[j+k],y=w*a[j+k+i];
  31. a[j+k]=x+y; a[j+k+i]=x-y;
  32. }
  33. }
  34. }
  35. }
  36. int main()
  37. {
  38. n=read(); m=read();
  39. for(int i=;i<=n;i++) a[i]=read();
  40. for(int i=;i<=m;i++) b[i]=read();
  41. m+=n;
  42. for(n=;n<=m;n<<=) l++;
  43. for(int i=;i<n;i++) r[i]=(r[i>>]>>)|((i&)<<(l-));
  44. fft(a,); fft(b,);
  45. for(int i=;i<=n;i++) a[i]=a[i]*b[i];
  46. fft(a,-);
  47. for(int i=;i<=m;i++) printf("%d ",(int)(a[i].real()/n+0.5));
  48. }

【模版】多项式乘法 FFT的更多相关文章

  1. 多项式乘法(FFT)学习笔记

    ------------------------------------------本文只探讨多项式乘法(FFT)在信息学中的应用如有错误或不明欢迎指出或提问,在此不胜感激 多项式 1.系数表示法  ...

  2. 【learning】多项式乘法&fft

    [吐槽] 以前一直觉得这个东西十分高端完全不会qwq 但是向lyy.yxq.yww.dtz等dalao们学习之后发现这个东西的代码实现其实极其简洁 于是趁着还没有忘记赶紧来写一篇博 (说起来这篇东西的 ...

  3. 洛谷.3803.[模板]多项式乘法(FFT)

    题目链接:洛谷.LOJ. FFT相关:快速傅里叶变换(FFT)详解.FFT总结.从多项式乘法到快速傅里叶变换. 5.4 又看了一遍,这个也不错. 2019.3.7 叕看了一遍,推荐这个. #inclu ...

  4. @总结 - 1@ 多项式乘法 —— FFT

    目录 @0 - 参考资料@ @1 - 一些概念@ @2 - 傅里叶正变换@ @3 - 傅里叶逆变换@ @4 - 迭代实现 FFT@ @5 - 参考代码实现@ @6 - 快速数论变换 NTT@ @7 - ...

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

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

  6. UOJ 34 多项式乘法 FFT 模板

    这是一道模板题. 给你两个多项式,请输出乘起来后的多项式. 输入格式 第一行两个整数 nn 和 mm,分别表示两个多项式的次数. 第二行 n+1n+1 个整数,表示第一个多项式的 00 到 nn 次项 ...

  7. [HNOI2017] 礼物 - 多项式乘法FFT

    题意:给定两个 \(n\) 元环,环上每个点有权值,分别为 \(x_i, y_i\).定义两个环的差值为 \[\sum_{i=0}^{n-1}{(x_i-y_i)^2}\] 可以旋转其中的一个环,或者 ...

  8. 【Luogu3808】多项式乘法FFT(FFT)

    题目戳我 一道模板题 自己尝试证明了大部分... 剩下的还是没太证出来... 所以就是一个模板放在这里 以后再来补东西吧.... #include<iostream> #include&l ...

  9. 【模板】多项式乘法(FFT)

    题目描述 给定一个n次多项式F(x),和一个m次多项式G(x). 请求出F(x)和G(x)的卷积. 输入输出格式 输入格式: 第一行2个正整数n,m. 接下来一行n+1个数字,从低到高表示F(x)的系 ...

随机推荐

  1. 2.hbase原理(未完待续)

    hbase简介相关概念hmsterhregionserver表regionhstorememstorestorefilehfileblockcacheWALminorcompactmajorcompa ...

  2. 从oracle导入hive

    sqoop import --connect jdbc:oracle:thin:@10.39.1.43:1521/rcrm --username bi_query --password ####### ...

  3. HTML5文档的各个组成部分分类

    <!DOCTYPE html><!--声明文档结构类型--> <html lang="zh-cn"><!--声明文档文字区域--> ...

  4. PSP1123

    PSP时间图: 类型 任务 开始时间 结束时间 净时间 中断时间 日期 开会 开会 16:17 16:50 33 0 20171027 开会 开会 17:00 17:22 22 0 20171028 ...

  5. 欢迎来怼-Alpha周(2017年10月19)贡献分配规则和分配结果

    .从alpha周(2017年10月19日开始的2周)开始,提高贡献分比重. 贡献分 : 团队分 = 1 : 5 教师会在核算每位同学总分时按比例乘以系数. 每位同学带入团队贡献分10分,如果团队一共7 ...

  6. LintCode-68.二叉树的后序遍历

    二叉树的后序遍历 给出一棵二叉树,返回其节点值的后序遍历. 样例 给出一棵二叉树 {1,#,2,3}, 返回 [3,2,1] 挑战 你能使用非递归实现么? 标签 递归 二叉树 二叉树遍历 code / ...

  7. iOS开发本地通知

    /* 本地通知:不通过网络,在本地实现的通知,自己发给自己 远程通知:必须通过网络,使用推送技术(APNs),实现通知 本地通知: 1.要完成可以接收的通知形式的注册 2.具体通知的设置 3.发送通知 ...

  8. Swift-创建UIButton(其他UI组件雷同)

    let button = UIButton.init(frame: CGRectMake(, , , )) button.setTitle("按钮", forState: UICo ...

  9. <Effective C++>读书摘要--Inheritance and Object-Oriented Design<一>

    1.Furthermore, I explain what the different features in C++ really mean — what you are really expres ...

  10. Spring Boot(三)自动装配

    @Configuration和@Bean Spring提供了注解@Configuration和@Bean注解用来配置多个Bean,在以前的Spring项目中可以通过xml的方式配置: <bean ...