FFT一周目开坑!
先来一段非递归!
#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一周目开坑!的更多相关文章
- 开坑,Unix环境高级编程,转行之路又得缓缓了
不要问我基础,我用了近6年的Linux系统,最早的版本可以追溯到Ubuntu 8.04,常用的命令 VIM基本上是没压力,遇到问题google 配置环境变量 网络环境也不在话下, C语法基本熟练,过去 ...
- CozyRSS开发记录0-RSS阅读器开坑
CozyRSS开发记录0-RSS阅读器开坑 1.RSS RSS,全名是Really Simple Syndication,简易信息聚合. 关于RSS相关的介绍,网上可以很容易的找到.RSS阅读器是我几 ...
- 【前言】Go语言开坑
很早之前就已经听过Go语言的大名,今天终于要开坑研究Go了,来吧看看<Go语言从入门到入坟>. [Go语言学习目录] 1. Go安装 2. Go变量(Variables) 3. Go语言基 ...
- 开坑数位dp
[背景] 在10月3日的dp专练中,压轴的第6题是一道数位dp,于是各种懵逼. 为了填上这个留存已久的坑,蒟蒻chty只能开坑数位dp了. [例题一][HDU2089]不要62 题目大意:给你一个区间 ...
- (目录)Fortran学习笔记:开坑!!!
前言:因为某些原因,需要使用Fortran编写程序,记录下Fortran语法学习过程中的部分笔记.在此开坑记录,立下Flag,"希望年末能够更新完" Fortran 学习笔记 陈橙 ...
- CozyRSS2开发记录0-win10开坑
1.回顾 距离上一篇<CozyRSS1.0 - 有可用性版本>,恰好两个月整.在初步完成CozyRSS的WPF桌面版后,按照设想的,开始搞一个手机版的CozyRSS.由于种种原因,并没有使 ...
- taobao_api项目开坑,自主完成淘宝主要接口的开发-版本:卖家版(非淘宝api)
项目名称:taobao_api 项目目的:独立实现各个淘宝操作的相关api,不依赖淘宝提供的api,而是自己实现接口 前期实现接口:已付款订单查询(自动更新), 订单发货 , 订单备注 应用场景:中小 ...
- Html+CSS二周目--->常用概念
学习css几乎俩周,来总结一下 对于初学者来说,有一些基本的概念是我们应当清楚的.掌握这些概念,可以帮助你更加有效的开发,大大提高开发效率. 1.盒子模型 2.浮动(float) 3.定位(posit ...
- 基于VS2017+ROS的ROSOnWindows开坑之旅
前面尝试了很多算法之后,得先找个能用的环境跑起来试试,于是决定尝试下ROS环境,但是我一直没有尝试Windows版也是因为这个原因,坑太多了,不过现在找到了微软IoT移植的ROSOnWindows,并 ...
随机推荐
- c++操作io常见命令
用c++练习下 系统常见io命令. 1)显示文档的文本 2)统计文本单词数字 3)列出目录所有文件 ,递归思路 4)查找第一个匹配的字符. 5)文本单词排序, 快速排序,其实还是递归思路 6)文本单词 ...
- 百度之星Astar2016 Round2A
All X 等比数列求和一下 A/B MOD C = A MOD (B*C) / B 或者分治一下 Sitting in Line 状压+拓扑dp dp(i, j)表示当前二进制状态为j,当前状态的 ...
- jquery中html(), text(),val()区别(zhuan)
https://zhidao.baidu.com/question/307317838.html http://www.cnblogs.com/aqbyygyyga/archive/2011/11/0 ...
- Hello,Akka
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/dreamhead-logs/235916459.html 只要稍微了解过一些Scala, ...
- 每一个程序员需要了解的10个Linux命令
作为一个程序员,在软件开发职业生涯中或多或少会用到Linux系统,并且可能会使用Linux命令来检索需要的信息.本文将为各位开发者分享10个有用的Linux命令,希望对你会有所帮助. 以下就是今天我们 ...
- XMPP 常见错误:(<failure xmlns="urn:ietf:params:xml:ns:xmpp-sasl"><not-autho
1检查jid XMPP认证的问题,一般都是与JID有关的,因此解决这类问题,首选的入口就是分析一下XMPPStream的JID,客户端在与服务器连接后,Socket就绑定了这个端口,用来处理与服务器的 ...
- redirect模块的秘密
所有的redirect记录都在config/url_directs下面, 但是某个node/edit的redirect记录只包含redirect到自己的记录,且不验证url的合理性. 现在比如,a跳转 ...
- xUtils更新到3.0后的基本使用规则
说实话,对于xUtils,是我最近才用到的开发框架(也是刚接触),对于其功能不得不说,简化了很多的开发步骤,可以说是非常好的开发工具,但是其最近更新到3.0也没有解决加载自定义ImageView报错的 ...
- C#对象的深拷贝与浅拷贝
转载自:http://blog.163.com/hr_msn/blog/static/21549405120132250396584/ 深拷贝是指源对象与拷贝对象互相独立,其中任何一个对象的改动都不会 ...
- mouseenter和mouseout中间的时间控制
为了防止鼠标快速滑过div而加的时间限制: 在看延迟绑定时候看到,这也算是延迟绑定了?:(20130909) <!DOCTYPE html> <html lang="en& ...