数学:FFT
在信息学竞赛中FFT只有一个用处那就是加速多项式的乘法
多项式乘法原本的时间复杂度是O(n^2)的,然后经过FFT之后可以优化为O(nlogn)
FFT就是将系数表示法转化成点值表示法相乘,再由点值表示法转化为系数表示法的过程
一个典型的例题是BZOJ2194,求卷积?
#include<complex>
#include<cmath>
#include<cstdio>
#define pi acos(-1)
using namespace std;
const int maxn=;
int n,m,L;
int R[maxn];
complex<double> a[maxn],b[maxn];
int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
void fft(complex<double> *a,int f)
{
for(int i=;i<n;i++) if(i<R[i]) swap(a[i],a[R[i]]);
for(int i=;i<n;i<<=)
{
complex<double> wn(cos(pi/i),f*sin(pi/i));
for(int j=;j<n;j+=(i<<))
{
complex<double> w(,);
for(int k=;k<i;k++,w*=wn)
{
complex<double> x=a[j+k],y=w*a[j+k+i];
a[j+k]=x+y;a[j+k+i]=x-y;
}
}
}
if(f==-) for(int i=;i<n;i++) a[i]/=n;
}
int main()
{
scanf("%d",&n);
n--;
for(int i=;i<=n;i++)
{
a[i]=read();
b[n-i]=read();
}
m=*n;
for(n=;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]*=b[i];
fft(a,-);
for(int i=m/;i<=m;i++) printf("%d\n",(int)(a[i].real()+0.1));
return ;
}
现在我所知道的就是FFT和多项式、复数和单位根有关系
别的等日后再补吧。。
数学:FFT的更多相关文章
- 六月计划#2A(6.10-6.16)
17/35 STL BZOJ_1588_&_Codevs_1296_[HNOI2002]_营业额统计(平衡树/set)(set重做) BZOJ_1208_&_Codevs_1258_[ ...
- 2017-12 CDQZ集训(已完结)
从联赛活了下来(虽然分数倒一……),接下来要去CDQZ集训啦…… DAY -2 2017-12-16 被老师安排负责一部分同学的住宿以及安排…… 抓紧时间继续学习,LCT真好玩啊真好玩…… 晚上放假了 ...
- NOIP模拟赛[补档]
图论: 差分约束, 2 SAT 数据结构 字符串 数学: FFT / NTT / 线代 DP 计算几何 暴力 线性基 CF 724G 计划: D1 T1: 斜率优化DP D1 T2: 差分约束 D1 ...
- BZOJ5300 [Cqoi2018]九连环 【数学】【FFT】
题目分析: 这道题是数学必修五的原题,做法如下图,书上讲得很详细了. 那么这道题目用快速幂就可以解决了,值得注意的是,分析时间复杂度会发现直接做乘法其实是O(n^2)的,但是有一个1/20左右的常数, ...
- [hdu5307] He is Flying [FFT+数学推导]
题面 传送门 思路 看到这道题,我的第一想法是前缀和瞎搞,说不定能$O\left(n\right)$? 事实证明我的确是瞎扯...... 题目中的提示 这道题的数据中告诉了我们: $sum\left( ...
- FFT&NTT数学解释
FFT和NTT真是噩梦呢 既然被FFT和NTT坑够了,坑一下其他的人也未尝不可呢 前置知识 多项式基础知识 矩阵基础知识(之后会一直用矩阵表达) FFT:复数基础知识 NTT:模运算基础知识 单位根介 ...
- 【数学】快速傅里叶变换(FFT)
快速傅里叶变换(FFT) FFT 是之前学的,现在过了比较久的时间,终于打算在回顾的时候系统地整理一篇笔记,有写错的部分请指出来啊 qwq. 卷积 卷积.旋积或褶积(英语:Convolution)是通 ...
- 数学(FFT):BZOJ 3527 [Zjoi2014]力
题目在这里:http://wenku.baidu.com/link?url=X4j8NM14MMYo8Q7uPE7-7GjO2_TXnMFA2azEbBh4pDf7HCENM3-hPEl4mzoe2w ...
- jzoj6005. 【PKUWC2019模拟2019.1.17】数学 (生成函数+FFT+抽代+高精)
题面 题解 幸好咱不是在晚上做的否则咱就不用睡觉了--都什么年代了居然还会出高精的题-- 先考虑如果暴力怎么做,令\(G(x)\)为\(F(n,k)\)的生成函数,那么不难发现\[G^R(x)=\pr ...
随机推荐
- 第六周的PSP
本周PSP: 本周进度条: 累积进度图:: 本周PSP饼状图:
- Android开发随笔2
昨天:对anroid的系统架构了解比如:基于linux内核,整合库函数和java编译器并且为上层提供封装好的api和一些基本系统级应用 创建一个安卓的模拟器 了解了ddms的作用和内容 利用已有的工具 ...
- 【IdentityServer4文档】- 使用客户端凭据保护 API
使用客户端凭据保护 API quickstart 介绍了使用 IdentityServer 保护 API 的最基本场景. 接下来的场景,我们将定义一个 API 和一个想要访问它的客户端. 客户端将在 ...
- IDEA + SSH OA 第一天(IDEA 文件夹类型了解)
回顾一下 IDEA 的文件夹的类型 设置文件夹方法 或者点击右上角的 文件夹的类型选择:可通过,右键文件夹,选择你要的类型: Sources Root : 源码的目录 Resources Root:源 ...
- git找回当前目录下误删的所有文件
git checkout . 参考:http://opentechschool.github.io/social-coding/extras/delete-restore.html
- 浅谈 Sql Server 触发器
一.触发器概念 1.1.触发器特征 1.1.1.触发器是在对表进行增.删.改时,自动执行的存储过程.触发器常用于强制业务规则,它是一种高级约束,通过事件进行触发而被执行. ...
- DELL服务器PXE前期处理
thaks:https://www.cnblogs.com/520ZXL/ PXE批量推系统,服务器要具备条件:raid处理好,设置为pxe启动,与PXE服务器网络要通 先进入磁盘阵列(ctrl+R) ...
- 微信Web开发者工具-下载、安装和使用图解
开发和测试小程序,需要借助微信官方提供的微信Web开发者工具进行预览和调试代码,从下载安装到使用,大致的流程如下: 1.下载安装包 下载地址传送门:https://developers.weixin. ...
- docker+mesos+marathon
前言 (Core) [root@docker-slave ~]# uname -r 3.10.0-229.4.2.el7.x86_64 [root@docker-slave ~]# uname -m ...
- jmeter 配置元件之计数器Counter
用jmeter生成数据 我用过几种以下几种方法 1.CSV Data Set Config 参数化 2.${_Random} ${_Random}是jmeter函数助手里面自带的一个函数,作用是返回 ...