FFT一周目开坑!

时间:2021-02-25 02:44:23

先来一段非递归!

 #include<bits/stdc++.h>
using namespace std;
#define N ((1<<18)+3)
const double eps=0.5,pi=acos(-);
struct vec{
double r,i;
vec operator +(const vec& w){return (vec){r+w.r,i+w.i};}
vec operator -(const vec& w){return (vec){r-w.r,i-w.i};}
vec operator *(const vec& w){return (vec){r*w.r-i*w.i,i*w.r+r*w.i};}
}a[N],b[N];
int n,m,len,rev[N],t;
bool che[N];
int read(){
int f=,a=getchar(),tmp=;
while(a<'' || a>'') {if(a=='-') f=-; a=getchar();}
while(a>=''&& a<='') tmp=tmp*+a-'',a=getchar();
return tmp*=f;
}
void fft(vec *x,int t){
memset(che,,sizeof(che));
for(int i=;i<len;i++) if(!che[i]) swap(x[i],x[rev[i]]),che[rev[i]]=;
for(int lnow=;lnow<=len;lnow<<=){ //从最底层开始往上推,一开始每一小坨只有2个,慢慢往上到最后达到len
vec w0=(vec){cos(t**pi/lnow),sin(t**pi/lnow)},w,t1,t2;
for(int i=;i<len;i+=lnow){ //每一坨
vec w=(vec){,};
for(int j=;j<lnow/;j++,w=w*w0){
t1=x[i+j]; t2=w*x[i+j+lnow/];
x[i+j]=t1+t2; x[i+j+lnow/]=t1-t2;
}
}
}
}
int main(){
n=read(); m=read();
for(len=;len<(n+m+);len<<=,t++); t--;
for(int i=;i<=len;i++) rev[i]=(rev[i>>]>>)|(i&?(<<t):); //二进制反转,注意之前的t--
for(int i=;i<=n;i++) a[i].r=read();
for(int i=;i<=m;i++) b[i].r=read();
fft(a,); fft(b,);
for(int i=;i<=len;i++) a[i]=a[i]*b[i];
fft(a,-);
for(int i=;i<=n+m;i++) printf("%d ",(int)(a[i].r/len+eps));
return ;
}

FFT一周目开坑!的更多相关文章

  1. 开坑,Unix环境高级编程,转行之路又得缓缓了

    不要问我基础,我用了近6年的Linux系统,最早的版本可以追溯到Ubuntu 8.04,常用的命令 VIM基本上是没压力,遇到问题google 配置环境变量 网络环境也不在话下, C语法基本熟练,过去 ...

  2. CozyRSS开发记录0-RSS阅读器开坑

    CozyRSS开发记录0-RSS阅读器开坑 1.RSS RSS,全名是Really Simple Syndication,简易信息聚合. 关于RSS相关的介绍,网上可以很容易的找到.RSS阅读器是我几 ...

  3. 【前言】Go语言开坑

    很早之前就已经听过Go语言的大名,今天终于要开坑研究Go了,来吧看看<Go语言从入门到入坟>. [Go语言学习目录] 1. Go安装 2. Go变量(Variables) 3. Go语言基 ...

  4. 开坑数位dp

    [背景] 在10月3日的dp专练中,压轴的第6题是一道数位dp,于是各种懵逼. 为了填上这个留存已久的坑,蒟蒻chty只能开坑数位dp了. [例题一][HDU2089]不要62 题目大意:给你一个区间 ...

  5. (目录)Fortran学习笔记:开坑!!!

    前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...

  6. CozyRSS2开发记录0-win10开坑

    1.回顾 距离上一篇<CozyRSS1.0 - 有可用性版本>,恰好两个月整.在初步完成CozyRSS的WPF桌面版后,按照设想的,开始搞一个手机版的CozyRSS.由于种种原因,并没有使 ...

  7. taobao&lowbar;api项目开坑,自主完成淘宝主要接口的开发-版本:卖家版(非淘宝api)

    项目名称:taobao_api 项目目的:独立实现各个淘宝操作的相关api,不依赖淘宝提供的api,而是自己实现接口 前期实现接口:已付款订单查询(自动更新), 订单发货 , 订单备注 应用场景:中小 ...

  8. Html&plus;CSS二周目---&gt&semi;常用概念

    学习css几乎俩周,来总结一下 对于初学者来说,有一些基本的概念是我们应当清楚的.掌握这些概念,可以帮助你更加有效的开发,大大提高开发效率. 1.盒子模型 2.浮动(float) 3.定位(posit ...

  9. 基于VS2017&plus;ROS的ROSOnWindows开坑之旅

    前面尝试了很多算法之后,得先找个能用的环境跑起来试试,于是决定尝试下ROS环境,但是我一直没有尝试Windows版也是因为这个原因,坑太多了,不过现在找到了微软IoT移植的ROSOnWindows,并 ...

随机推荐

  1. Log4Net配置以及使用

    跟踪程序代码,及时发现程序的运行状态,是每个成熟的软件所必不可少的一个环节,网站发布到真实的环境之后,对于程序的运行状态,我们并不能想开发环境那也,点击调试.日志记录显示就尤为重要,在.NET中记录日 ...

  2. 带着问题学 Spring MVC 源码: 一、概述

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 简单就好,生活可以很德国 Q:什么是 Spring MVC ? ※ Spring MVC 是 S ...

  3. DOM节点操作

    请尊重知识,请尊重原创 更多资料参考请见  http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1  一.创建节 ...

  4. 关于return和exit

    关于return和exit 在子进程退出的时候有两种方式,exit和exec族函数,不能使用return,为什么不能用return呢,exit改成return 会出现父子进程又各自重复开始进行. 1. ...

  5. angularjs中ng-attr的用法

    <!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <me ...

  6. HTTP 错误 403&period;14 - Forbidden的解决办法

    错误: HTTP 错误 403.14 - ForbiddenWeb 服务器被配置为不列出此目录的内容.   原因: 出现这个错误,是因为默认文档中没有增加index.aspx导致的. 解决方法: 打开 ...

  7. 在Bootstrap开发框架中使用Grid&plus;&plus;报表

    之前在随笔<在Winform开发中使用Grid++报表>介绍了在Winform环境中使用Grid++报表控件,本篇随笔介绍在Bootstrap开发框架中使用Grid++报表,也就是Web环 ...

  8. 阿里云kubernetes遭入侵pubg进程占用cpu资源100&percnt;解决方法

    发现服务器CPU占用100%,通过top命令发现pubg -c config.json -t 2占用CPU资源,kill进程会自动启动.黑客入侵方式是kubernetes创建pod. Name: ku ...

  9. jqgrid 编辑行、新增行、删除行、保存行

    编辑行:$("#jqGrid").jqGrid('editRow', rowKey); 删除行:$("#jqGrid").delGridRow(rowKey); ...

  10. 二、vue中组件的使用

    1.组件拆分 1.组件实质上也是一个vue实例,因此组件中也可以使用vue的对象属性,反过来每一个vue实例也是一个vue组件(注:1.唯一不同的是el是根实例的特有选项,2.组件中的data必须是一 ...