bzoj 2194快速傅立叶之二
来源:互联网 发布:linux 如何安装xampp 编辑:程序博客网 时间:2024/05/18 02:45
/************************************************************** Problem: 2194 User: Clare Language: C++ Result: Accepted Time:1564 ms Memory:11820 kb****************************************************************/ #include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include <queue>#include <vector>using namespace std; #define N 300010const double pi=acos(-1); int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;} int n,m,l;int Rev[N];struct Complex{ double r,i; Complex(){} Complex(double r_,double i_):r(r_),i(i_){} Complex operator + (const Complex &a) const{ return (Complex){r+a.r,i+a.i}; } Complex operator - (const Complex &a) const{ return (Complex){r-a.r,i-a.i}; } Complex operator * (const Complex &a) const{ return (Complex){r*a.r-i*a.i,r*a.i+i*a.r}; }}A[N],B[N]; void FFT(Complex *a,int kind){ for(int i=0;i<n;i++) if(i<Rev[i])swap(a[i],a[Rev[i]]); for(int i=1;i<n;i<<=1) { Complex wn(cos(pi/i),sin(pi/i)*kind); for(int len=i<<1,j=0;j<n;j+=len) { Complex w(1,0); for(int k=0;k<i;k++) { Complex x=a[j+k],y=w*a[j+k+i]; a[j+k]=x+y; a[j+k+i]=x-y; w=w*wn; } } }} int main(){ n=read();n--; for(int i=0;i<=n;i++) { A[i].r=read();B[n-i].r=read(); } m=n+n;n=1; int L=0; while(n<=m) n<<=1,L++; for(int i=0;i<n;i++) Rev[i]=(Rev[i>>1]>>1)|((i&1)<<(L-1)); FFT(A,1);FFT(B,1); for(int i=0;i<n;i++) A[i]=A[i]*B[i]; FFT(A,-1); for(int i=0;i<n;i++) A[i].r/=n; for(int i=m/2;i<=m;i++) printf("%d\n",(int)(A[i].r+0.5)); return 0;}
0 0
- 【BZOJ 2194】 快速傅立叶之二
- bzoj 2194: 快速傅立叶之二
- BZOJ 2194(快速傅立叶之二-FFT)
- bzoj 2194快速傅立叶之二
- 【BZOJ 2194】 快速傅立叶之二|FFT
- BZOJ 2194 快速傅立叶之二 FFT
- BZOJ 2194: 快速傅立叶之二
- BZOJ 2194 快速傅立叶之二
- bzoj 2194: 快速傅立叶之二 fft
- BZOJ 2194: 快速傅立叶之二
- 【BZOJ 2194】 快速傅立叶之二
- bzoj 2194 快速傅立叶之二
- BZOJ 2194 快速傅立叶之二
- BZOJ 2194 快速傅立叶之二 快速傅里叶变换
- [BZOJ 2194] 快速傅立叶之二 · FFT
- bzoj 2194: 快速傅立叶之二 (FFT)
- 【bzoj 2194】快速傅立叶之二(FFT)
- 2194: 快速傅立叶之二
- 【转】Android LockScreen admin API sample code
- iOS开发中@property的属性weak nonatomic strong readonly等介绍
- zookeeper学习-2(如何使用zookeeper进行配置管理-java版本)
- 安全测试之缓冲区溢出(BO)
- Linux下编译的那些事
- bzoj 2194快速傅立叶之二
- javascript实现键盘按下回车时触发
- quick-cocos2d-x教程13:实现帧动画
- druid配置详解
- Linux命令行学习之路(五)
- SQLite数据库创建、升级数据库、事务处理、添加、更新、删除、查询管理操作类完整代码
- JavaWeb中读取文件资源的路径问题
- 使用process_monitor.sh监控hadoop进程的crontab配置
- LXC内启动NFS服务(NFS server on LXC)