FFT学习笔记

搬运一下之前在luogu blog写的。

参考http://picks.logdown.com/posts/177631-fast-fourier-transform

废话不写了。首先补零将多项式项数补为2的整数次幂。下标均从0开始。

DFT(递归版)

将系数表示转为点值表示。设项数为n,即求多项式将所有1的n次根代入所得的值。

设多项式为A。ωn为n次根。

A(ωn^m)=A0(ω(n/2)^m)+ωn^mA1(ω(n/2)^m)

A(ωn^(m+n/2))=A0(ω(n/2)^m)-ωn^mA1(ω(n/2)^m)

A0为将A的偶数项取出组成一个新的n/2-1次多项式,A1为奇数项同理。

到只有一项的时候显然将1代入所得值就是那个系数。

一个分治与合并的过程。这样可以递归实现。

DFT(迭代版)

递归常数太大空间爆炸。考虑递归的过程。

0 1 2 3 4 5 6 7

0 2 4 6 | 1 3 5 7

0 4 | 2 6 | 1 5 | 3 7

0 | 4 | 2 | 6 | 1 | 5 | 3 | 7

000 100 010 110 001 101 011 111

可以发现二进制下反过来就是从小到大排序的了。

于是开始按照这种顺序排好序就可以愉快的合并了。

每次迭代出来的东西就是其代表的那个多项式的点值表示。

细节:如何求二进制下翻转并排序

r[i]表示i的翻转。有r[i]=(r[i>>1]>>1)|(i&1)*(n>>1)

即考虑它的翻转与右移一位时有何不同。r[i>>1]>>1即其去掉最后一位的翻转。然后给它添上第一位,i&1即这位是1还是0,n>>1即其最高位代表的值。

排序时直接扫一遍,若i<r[i]交换两个位置的数。正确性因为显然有r[r[i]]=i。

模板:

struct complex{double x,y;complex operator +(const complex&a) const{return (complex){x+a.x,y+a.y};}complex operator -(const complex&a) const{return (complex){x-a.x,y-a.y};}complex operator *(const complex&a) const{return (complex){x*a.x-y*a.y,x*a.y+y*a.x};}
};//复数类
void DFT(int n,complex *a,int p)
{for (int i=0;i<n;i++) if (i<r[i]) swap(a[i],a[r[i]]);for (int i=2;i<=n;i<<=1){complex wn=(complex){cos(2*PI/i),p*sin(2*PI/i)};//i项式用i次根 p为1 DFT 为-1 IDFTfor (int j=0;j<n;j+=i){complex w=(complex){1,0};for (int k=j;k<j+(i>>1);k++,w=w*wn){complex x=a[k],y=w*a[k+(i>>1)];a[k]=x+y,a[k+(i>>1)]=x-y;}}}
}
for (int i=0;i<n;i++) r[i]=(r[i>>1]>>1)|(i&1)*(n>>1);

 

IDFT

将点值表示化为系数表示。其实并没有太搞懂不过毕竟写的时候只要传个参数那就先放放吧。注意最后值除以项数。

NTT

没啥区别就是模意义下的。那用原根代替复数就好了。

原根随便都能求出来。

模数需要为2^n*k+1的形式且为质数。因为需要求得2^i次根,也即原根的(p-1)/2^i次,这个东西显然需要是整数。

常用模数有

998244353=2^23*119+1

1004535809=2^21*479+1

469762049=2^26*7+1

都能跑几百万项。

IDFT时用原根的逆元。最后乘项数的逆元。

模板

    for (int i=2;i<=n;i<<=1){int wn=pow(o,(p-1)/i);for (int j=0;j<n;j+=i){int w=1;for (int k=j;k<j+(i>>1);k++,w=1ll*w*wn%p){int x=a[k],y=1ll*w*a[k+(i>>1)]%p;a[k]=(x+y)%p,a[k+(i>>1)]=(x-y+p)%p;}}}

 

转载于:https://www.cnblogs.com/Gloid/p/9379138.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自动产生fsm代码的工具_代码自动生成工具

构建支持多种数据库类型的代码自动生成工具背景&#xff1a;一般的业务代码中写来写去&#xff0c;无外乎是先建好model&#xff0c;然后针对这个model做些CRUD的操作。(主要针对单表的业务操作)针对于数据库dao、mapper等的代码自动生成已经有了mybatisGenerator这种工具&…

gtest测试框架使用详解_测试框架TestNG使用介绍

近期接触到了一个比较全面的基于Java的接口自动化测试框架&#xff0c;作为一名Java小白&#xff0c;所以打算研究一下&#xff0c;顺带学习学习Java&#xff0c;该测试框架的逻辑控制层使用的HttpClient TestNG。在本期中&#xff0c;给大家分享一下TestNG测试框架的基础知识…

同期收治患者住院天数_(完整版)DDD值算法

有关DDD 值的计算问题根据卫生部开展的《抗菌药物临床应用专项整治活动实施方案》要求&#xff0c;抗菌药物使用强度应控制在40DDD 以下。抗菌药物使用强度&#xff0c;即限定日剂量(defined daily doses &#xff0c;DDD )&#xff0c;为药物主要适应症以成人每日常用剂量作为…

LOJ#6282. 数列分块入门 6

一个动态的插入过程&#xff0c;还需要带有查询操作。 我可以把区间先分块&#xff0c;然后每个块块用vector来维护它的插入和查询操作&#xff0c;但是如果我现在这个块里的vector太大了&#xff0c;我可能的操作会变的太大&#xff0c;所以这时候我需要把现在里面的数全部拿出…

fragment在activity中的静态和动态用法_使用Matlab修改压缩Gif动态图片制作微信表情...

脚本之家你与百万开发者在一起作者&#xff1a;theOwlAndPussyCat/焦旭光引言电脑里存了很多有意思的Gif动态图片&#xff0c;闲暇想把这些动图全导入微信表情&#xff0c;可是这些动图很多大小超过了微信表情大小1MB的限制&#xff0c;要制作成表情只能压缩图像文件大小。网上…

mysql命令_MySQL常用操作命令

MySQL常用操作命令PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。欢迎大家阅读&#xff01;更多相关信息请关注相关栏目&#xff01;1、启动MySQL服务器实际上上篇已讲到如何启动MySQL。两种方法&#xff1a;一是用winmysqlad…

The 2018 ACM-ICPC上海大都会赛 J Beautiful Numbers (数位DP)

题意&#xff1a;求小于等于N且能被自己所有位上数之和整除的数的个数。 分析&#xff1a;裸的数位dp。用一个三位数组dp[i][j][k]记录&#xff1a;第i位&#xff0c;之前数位之和为j&#xff0c;对某个mod余数为k的状态下满足条件的个数。这里mod的值就是小于等于N的数中&…

mysql定时增量备份_Mysql日常自动备份和增量备份脚本

序你是否在寻找一个MySQL备份脚本?适合对象本文是在Linux下,mysql 4.1.14版本下测试的,经过适当修改可能适合mysql 4.0,5.0及其其他版本.本文适合于没有启动复制功能的mysql,如果启动了复制,可能不需要采取这种备份策略或者需要修改相关参数.每个人的备份策略都可能不同,所以请…

frontcon函数用不了_C++复制构造函数与析构函数

想用机器人赋能未来&#xff0c;少不了扎实的编程的基本功&#xff0c;让我们跟着清华大学的C语言程序设计课程一起过一遍C的语法知识吧&#xff01;当定义基本类型的变量时&#xff0c;经常会用已有的变量去初始化新定义的变量&#xff0c;当定义对象的时候也有类似的需求&…

在京东上买的手机然后申请退货的经历

在京东上买的手机&#xff0c;是支持7天无理由退货的类型的。试用了一下感觉不是太喜欢&#xff0c;就选择退货了。 具体情况如下&#xff1a;先在网上填申请&#xff0c;然后等电话通知什么时候把手机给负责人&#xff0c;给过负责人之后&#xff0c;负责人先检查外观等是否符…

mysql tungsten_使用tungsten将mysql的数据同步到hadoop

背景线上有很多的数据库在运行&#xff0c;后台需要一个分析用户行为的数据仓库。目前比较流行的是mysql和hadoop平台。现在的问题是&#xff0c;如何将线上的mysql数据实时的同步到hadoop中&#xff0c;以供分析。这篇文章就是利用tungsten-replicator来实现。环境由于tungste…

软件项目立项书_2019年度上海市软件和集成电路产业发展专项资金项目立项

上海艾瑞德生物科技有限公司荣获2019年上海市软件和集成电路产业发展专项资金(集成电路和电子信息制造领域)项目立项&#xff01;上海艾瑞德生物科技有限公司的【医用体外诊断动态光场图像采集电子模块的研发及产业化】喜获2019年上海市软件和集成电路产业发展专项资金(集成电路…

line-height:1.5和line-height:150%的区别

1. 给你个数&#xff0c;孩子自己算吧 line-height:1.5 父元素设置line-height:1.5会直接继承给子元素&#xff0c;子元素根据自己的font-size再去计算子元素自己的line-height。 2.老子说多大就是多大 line-height:150% 父元素设置line-height:150%是计算好了line-height值&…

mysql提供了表示日期和时间的数据类型_MySQL数据类型 - 日期和时间类型(1)

1.日期和时间数据类型语法用于表示时间值的日期和时间数据类型是DATE, TIME, DATETIME, TIMESTAMP和 YEAR。对于TIME, DATETIME和 TIMESTAMP值&#xff0c;MySQL支持小数秒&#xff0c;精度可达微秒(6位数)。要定义包含小数秒部分的列&#xff0c;请使用语法type_name(fsp)&…

软件质量保证计划_CMMI V2.0 精讲之“过程质量保证”

过程质量保证(PROCESS QUALITY ASSURANCE, PQA)目的&#xff1a;验证并改进已执行的过程和所产生的工作产品的质量。价值&#xff1a;增强过程使用和改进的一致性&#xff0c;以最大限度地提高业务效益和客户满意度。实践概述第1级PQA 1.1识别并解决过程和工作产品问题。第2级P…

mysql gzip_在mysql中存储GZIP:ed文本?

Is it a common thing for bigger applications and databases to GZIP text data before inserting it to the database?Ill guess that any full-text search on the actual text field will not be working before unzipping it again?解决方案Ive not seen this done muc…

07.30《jQuery》——1.1DOM对和jQuery对象的转化

1.dom对象--->jQuery对象 $(DOM对象):是把DOM对象转化成JQuery对象 演示代码 //1.dom对象---->jQuery对象 var div1 document.getElementById("div1"); var $div1 $(div1); alert($div1.html());// $div1.width() jQuery对象实质就是map、关联数组 Dom对象是…

mysql数据库持续_MySql数据库--持续记录ing

1 基本&#xff0c;引擎&#xff0c;数据类型&#xff0c;运算1.1 基本操作启动&#xff1a;net start mysql停止&#xff1a;net stop mysql连接: mysql –uroot -h127.0.0.1 -proot断开连接&#xff1a;quit; 或 exit;查询支持的存储引擎&#xff1a;show engines; 或 show v…

html 分页_JQuery堪称完美的分页函数

演示效果&#xff1a;html部分&#xff08;引入jquery.js&#xff09;<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>jQuery简单的分页插件</title> </head><link rel"stylesheet" href"…

mysql 8.0.12解压版安装教程_mysql 8.0.12 解压版安装教程

本文为大家分享了mysql 8.0.12 解压版安装教程&#xff0c;供大家参考&#xff0c;具体内容如下1、首先在官网上下载mysql8.0.12的压缩包&#xff1a;下载地址2、下载成功后解压到任意目录&#xff0c;比如我的是E:\download\mysql-8.0.12-winx64&#xff1b;3、配置环境变量&a…