题意:

给出n个数qi,给出Fj的定义如下: 
 
令Ei=Fi/qi,求Ei.

  fft的那一堆东西还是背不到啊。。。这次写虽说完全自己写的,但是还是在参见了以前fft程序的情况下调了很久,主要在如下几点写错:1、非递归中内层数组调用中下表忘掉加k 2、每次转换乘的那个数是cos(...)+isin(...),不要记混了,且里面是(a/b*2*PI) 3、pp[]没有每次清零这一些逗B错误。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
#define MAXN 1100000
#define PI 3.1415926535897932384
int m,n;
struct Complex
{
double x,y;
Complex(){};
Complex(double x,double y=):x(x),y(y){};
Complex operator +(Complex a)
{
return Complex(x+a.x,y+a.y);
}
Complex operator -(Complex a)
{
return Complex(x-a.x,y-a.y);
}
Complex operator *(Complex a)
{
return Complex(x*a.x-y*a.y,x*a.y+y*a.x);
}
};
Complex ww[MAXN][];
void dft(Complex g[],int len,bool d)
{
Complex t;
for (int i=;i<len;i<<=)
{
for (int j=;j<len;j+=(i<<))
{
for (int k=;k<i;k++)
{
t=g[k+j];
g[k+j]=g[k+j]+g[k+j+i]*ww[k * (n/(i<<))][d];
g[k+j+i]=t-g[k+j+i]*ww[k * (n/(i<<))][d];
}
}
}
}
int pp[MAXN];
Complex g1[MAXN],g2[MAXN];
void fft(double s1[],double s2[],int m,double res[])
{
int i,j,k,x;
n=m;
while (n != (n&(-n)))n-=n&(-n);
n<<=;
memset(pp,,sizeof(pp));
for (i=;i<n;i++)
{
for (x=,j=n>>;j;j>>=,x<<=)
{
pp[i]+=((i&j)!=)*x;
}
}
for (i=;i<n;i++)g1[pp[i]]=s1[i];
for (i=;i<n;i++)g2[pp[i]]=s2[i];
for (i=;i<=n;i++)
{
ww[i][]=Complex(cos(*PI*i/n),-sin(*PI*i/n));
ww[i][]=Complex(ww[i][].x,-ww[i][].y);
}
dft(g1,n,);
dft(g2,n,);
for (i=;i<n;i++)g2[i]=g1[i]*g2[i];
for (i=;i<n;i++)g1[pp[i]]=g2[i];
dft(g1,n,);
for (i=n;i>=;i--)
res[i]=g1[i].x/n;
}
double q1[MAXN],q2[MAXN],a[MAXN];
double r1[MAXN],r2[MAXN];
double f[MAXN];
double s1[MAXN],s2[MAXN];
int main()
{
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
int n;
int i,j,k;
scanf("%d",&n);
int x,y,z;
for (i=;i<n;i++)
scanf("%lf",q1+i),q2[n-i-]=q1[i];
for (i=;i<n;i++)
a[i]=1.0/i/i;
fft(q1,a,n,r1);
fft(q2,a,n,r2);
for (i=;i<n;i++)
{
f[i]+=r1[i];
f[i]-=r2[n-i-];
}
for (i=;i<n;i++)
{
printf("%.5lf ",f[i]);
} }

bzoj 3527: [Zjoi2014]力 快速傅里叶变换的更多相关文章

  1. bzoj 3527: [Zjoi2014]力 快速傅里叶变换 FFT

    题目大意: 给出n个数\(q_i\)定义 \[f_i = \sum_{i<j}{\frac{q_iq_j}{(i-j)^2}} - \sum_{i>j}\frac{q_iq_j}{(i-j ...

  2. BZOJ 3527: [Zjoi2014]力

    Description 求 \(E_i=\sum _{j=0}^{i-1} \frac {q_j} {(i-j)^2}-\sum _{j=i+1}^{n-1} \frac{q_j} {(i-j)^2} ...

  3. BZOJ 3527: [ZJOI2014]力(FFT)

    BZOJ 3527: [ZJOI2014]力(FFT) 题意: 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \fra ...

  4. ●BZOJ 3527 [Zjoi2014]力

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题解: FFT求卷积. $$\begin{aligned}E_i&=\frac ...

  5. bzoj 3527 [Zjoi2014]力——FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 把 q[ i ] 除掉.设 g[ i ] = i^2 ,有一半的式子就变成卷积了:另一 ...

  6. bzoj 3527 [Zjoi2014] 力 —— FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 看了看TJ才推出来式子,还是不够熟练啊: TJ:https://blog.csdn.n ...

  7. 数学(FFT):BZOJ 3527 [Zjoi2014]力

    题目在这里:http://wenku.baidu.com/link?url=X4j8NM14MMYo8Q7uPE7-7GjO2_TXnMFA2azEbBh4pDf7HCENM3-hPEl4mzoe2w ...

  8. BZOJ 3527: [Zjoi2014]力(FFT)

    我们看一下这个函数,很容易就把他化为 E=sigma(aj/(i-j)/(i-j))(i>j)-sigma(aj/(i-j)/(i-j))(j>i) 把它拆成两半,可以发现分子与分母下标相 ...

  9. 【刷题】BZOJ 3527 [Zjoi2014]力

    Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi ...

随机推荐

  1. OC最实用的runtime总结,面试、工作你看我就足够了!

    前言 runtime的资料网上有很多了,部分有些晦涩难懂,我通过自己的学习方法总结一遍,主要讲一些常用的方法功能,以实用为主,我觉得用到印象才是最深刻的,并且最后两个demo也是MJExtension ...

  2. DNS加速之“智能DNS”跟“双线加速”、“CDN加速”的区别

    “智能DNS”跟“双线加速”.“CDN加速”的区别相信,很大部分IDC用户可能还没弄清楚状况,有人觉得智能DNS跟双线加速.CDN加速是类似的技术.其实不然,它们在工作方式上有着本质的区别,但它们又可 ...

  3. 响应式框架中,table表头自动换行的解决办法

    最近在用bootstrap开发网站,在处理一张table的时候发现,通过PC端查看样式正常,在手机上查看时,因为屏幕小,表格被压缩的厉害,表头和数据变形如下图 后来网上找了一下,发现一个好用的CSS属 ...

  4. 数组做为参数传入Oracle存储过程操作数据库

    p { margin-bottom: 0.25cm; direction: ltr; color: rgb(0, 0, 0); line-height: 120%; text-align: justi ...

  5. VC中动态添加控件

    VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...

  6. 项目报错-无法解析类型 XXXX.xx 从必需的 .class 文件间接引用了它

    这个编译错误有几个原因 1.jdk版本问题 要是报错是某些java包里的东西那就可以肯定是jdk版本的问题, 比如无法解析类型java.lang.Object,无法解析类型java.lang.Char ...

  7. (hdu)1042 N! 大数相乘

    题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1042 Problem Description Given an integer N( ≤ ...

  8. 关于C++对汉字拼音的处理

    直到目前我没有找到比较合适的输入汉字输出拼音的函数,那么根据网上流传的几个源码进行了改编,写成了输入汉字输出拼音的函数.对于此函数不能说强大,但是至少稳定可用,输出结果还没有发现什么错误. 那么下面我 ...

  9. 不对称密钥密码体系之RSA

    公钥密码的特性: 1.加密和解密使用不同的钥匙 2.从一个钥匙推出另一个钥匙在计算上不可行 3.每个钥匙都可以做加密和解密 RSA算法: 1978年, MIT三位数学家 R.L.Rivest,A.Sh ...

  10. python 访问php程序,实现定时

    #!/usr/bin/python #test2.py import sys import urllib2 j = True jj = 1##########用于统计,所以分页, url = 'htt ...