传送门

学了222个小时才把fftfftfft搞懂

我真是太菜了(膜拜ldxldxldx神仙202020分钟学完fftfftfft)

结果发现自己根本看不懂代码(233…)

对着板子敲了一发,等有时间再回来补学习笔记吧

#include<bits/stdc++.h>
using namespace std;
inline int read(){char ch=getchar();int res=0;while(!isdigit(ch))ch=getchar();while(isdigit(ch))res=(res<<3)+(res<<1)+(ch^48),ch=getchar();return res;
}
const int N=400005;
const double pi=acos(-1.0);
int n,m,lim=1,tim=0,pos[N];
struct plx{double x,y;friend inline plx operator+(const plx&a,const plx&b){return (plx){a.x+b.x,a.y+b.y};}friend inline plx operator-(const plx&a,const plx&b){return (plx){a.x-b.x,a.y-b.y};}friend inline plx operator*(const plx&a,const plx&b){return (plx){a.x*b.x-a.y*b.y,a.y*b.x+a.x*b.y};}
}a[N],b[N];
inline void fft(plx a[],int kd){for(int i=0;i<lim;i++)if(i<pos[i])swap(a[i],a[pos[i]]);for(int mid=1;mid<lim;mid<<=1){plx nw=(plx){cos(pi/mid),kd*sin(pi/mid)};for(int j=0,len=mid<<1;j<lim;j+=len){plx w=(plx){1,0};for(int k=0;k<mid;k++,w=w*nw){plx a0=a[j+k],a1=w*a[j+k+mid];a[j+k]=a0+a1,a[j+k+mid]=a0-a1;}}}
}
int main(){n=read(),m=read();for(int i=0;i<=n;i++)a[i].x=read();for(int i=0;i<=m;i++)b[i].x=read();while(lim<=n+m)lim<<=1,tim++;for(int i=0;i<lim;i++)pos[i]=(pos[i>>1]>>1)|((i&1)<<(tim-1));fft(a,1),fft(b,1);for(int i=0;i<lim;i++)a[i]=a[i]*b[i];fft(a,-1);for(int i=0;i<=n+m;i++){cout<<(int)(a[i].x/lim+0.5)<<" ";}
}

转载于:https://www.cnblogs.com/stargazer-cyk/p/10366367.html

【UOJ34】—多项式乘法(FFT)相关推荐

  1. 多项式乘法 FFT模板

    题目传送门 在下只是来存个板子,,(板子还是洛谷找的2333) 证明的话,太(wo)难(bu)写(hui),就先留个坑吧,,, NOIP后,如果没退役,我会回来填坑的,, #include<bi ...

  2. 解题报告(二)多项式问题(多项式乘法及其各种运算)(ACM/ OI)超高质量题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

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

    题目链接:点击查看 题目大意:给出两个多项式 F( x ) 和 G( x ) 的系数,求其卷积后的系数 题目分析:存一个FFT的模板,原理学不明白,数论和dp都扔给队友了,当个快乐的fw 代码: // ...

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

    P3803 [模板]多项式乘法(FFT) 题目描述 给定一个 n 次多项式 F(x),和一个 m 次多项式 G(x). 请求出 F(x)和 G(x)的卷积. 从低到高输出F(x)*G(x)的系数 另一 ...

  5. 学习:多项式算法----FFT

    FFT,即快速傅里叶变换,是离散傅里叶变换的快速方法,可以在很低复杂度内解决多项式乘积的问题(两个序列的卷积) 卷积 卷积通俗来说就一个公式(本人觉得卷积不重要) $$C_k=\sum_{i+j=k} ...

  6. P4245 【模板】任意模数多项式乘法

    P4245 [模板]任意模数多项式乘法 https://www.luogu.com.cn/blog/AzusaCat/solution-p4245 首先这类问题指的是对于一个非NTT模数,我们如何计算 ...

  7. P4245 【模板】任意模数多项式乘法(NTT)

    题意: P4245 [模板]任意模数多项式乘法 题解: NTT模板,记录一下 代码: #include <bits/stdc++.h>using namespace std;#define ...

  8. UOJ #34. 多项式乘法

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

  9. 浅谈算法——多项式乘法相关

    从多项式乘法到FFT 这一段大部分是复制以前我写的这篇博客: https://blog.csdn.net/wang3312362136/article/details/79510933 这篇博客有详细 ...

  10. 【luogu P3803】【模板】多项式乘法(NTT)

    [模板]多项式乘法(NTT) 题目链接:luogu P3803 题目大意 给你两个多项式,要你求它们的卷积. 思路 这次我们写 NTT 的做法. 它的优点就是它可以取模,而且不会有精度问题,而且会比 ...

最新文章

  1. Java中Integer包装类之间的比较问题
  2. 单链表删除所有值为x的元素_C/C++编程笔记:如何使用C++实现单链表?单链表的基本定义...
  3. nutch开发(二)
  4. Django09:图书管理系统笔记/choices用法/ MTV与MVC模型/多对多三种创建方式
  5. java 导入excel到数据库_java导入excel到数据库
  6. Remon Spekreijse CSerialPort串口类的修正版2014-01-10
  7. 《学习之道》第四章学习方法16学会做标记,而不是只划线
  8. 【代码规范】Google C++开源风格指南
  9. c语言贪吃蛇添加排行榜,用C语言写贪吃蛇笔记-1
  10. leetcode69
  11. Windows密钥备份
  12. java chr()_chr码值对应列表大全
  13. 前端开发者应该知道的 Centos/Dokcer/Nginx/Node/Jenkins 操作( 长文)
  14. 将手机、平板变成电脑第二屏
  15. 数据库管理员用户角色组权限设计
  16. 小米嵌入式软件工程师笔试题目解析
  17. Linux环境下编译并执行ava helloworld程序
  18. 一文扫清对 JavaScript 中的疑惑
  19. 百度地图图片叠加层切片工具:叠加层源图像制作方法,有点复杂
  20. 适用于2019的最佳WordPress Form Builder插件

热门文章

  1. ASP.NET EntityFrameworkCore code first 多对多设计
  2. nmap,tcpdump
  3. 安装GitLab,Jenkins,及自动化上线
  4. 20个绝密电脑小技巧
  5. Mybatis的xml文件中$ 与 #的区别
  6. Redis的zset有多牛?请把耳朵递过来
  7. 如何只用2GB内存从20/40/80亿个整数中找到出现次数最多的数
  8. Go实战--也许最快的Go语言Web框架kataras/iris初识三(Redis、leveldb、BoltDB)
  9. 01.几张图轻松理解String.intern()
  10. 开放封闭原则(OCP)