题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527

把 q[ i ] 除掉。设 g[ i ] = i^2 ,有一半的式子就变成卷积了;另一半只要翻转一下序列就也变成卷积了。

g[ i ] 那个部分FFT过一次之后就不用再FFT了。

注意别在主函数里把全局变量的 len 覆盖了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define db double
#define ll long long
using namespace std;
const int N=1e5+5,M=N<<2; const db pi=acos(-1);
int n,len,r[M];
db f[N],g[N],ans[N];
struct cpl{db x,y;}a[M],b[M],I;
cpl operator+ (cpl a,cpl b){return (cpl){a.x+b.x,a.y+b.y};}
cpl operator- (cpl a,cpl b){return (cpl){a.x-b.x,a.y-b.y};}
cpl operator* (cpl a,cpl b){return (cpl){a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x};}
void fft(cpl *a,bool fx)
{for(int i=0;i<len;i++)if(i<r[i])swap(a[i],a[r[i]]);for(int R=2;R<=len;R<<=1){int m=R>>1;cpl Wn=(cpl){ cos(pi/m),fx?-sin(pi/m):sin(pi/m) };for(int i=0;i<len;i+=R){cpl w=I;for(int j=0;j<m;j++,w=w*Wn){cpl tmp=w*a[i+m+j];a[i+m+j]=a[i+j]-tmp;a[i+j]=a[i+j]+tmp;}}}
}
int main()
{scanf("%d",&n); I.x=1;for(int i=0;i<n;i++)scanf("%lf",&f[i]);for(int i=1;i<n;i++)g[i]=(db)1/i/i;for(int i=0;i<n;i++)a[i].x=f[i],b[i].x=g[i];len=1;//do not 'int len'!!!!!for(;len<=n<<1;len<<=1);for(int i=0;i<len;i++)r[i]=(r[i>>1]>>1)+((i&1)?len>>1:0);fft(a,0); fft(b,0);for(int i=0;i<len;i++)a[i]=a[i]*b[i];fft(a,1);for(int i=0;i<n;i++) ans[i]=a[i].x/len;// /len!!!for(int i=0;i<len;i++) a[i].x=a[i].y=0;for(int i=0;i<n;i++) a[i].x=f[n-1-i];fft(a,0);for(int i=0;i<len;i++) a[i]=a[i]*b[i];fft(a,1);for(int i=0;i<n;i++){ans[i]-=a[n-1-i].x/len;printf("%.3f\n",ans[i]);}return 0;
}

转载于:https://www.cnblogs.com/Narh/p/10023116.html

bzoj 3527 [Zjoi2014]力——FFT相关推荐

  1. BZOJ.3527.[ZJOI2014]力(FFT)

    题目链接 \(Descripiton\) 给出\(q[\ ]\),\[F[j]=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_ ...

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

    题意 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \frac{q_iq_j}{(i-j)^2}-\sum \limi ...

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

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

  4. BZOJ 3527: [Zjoi2014]力

    题目地址:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题目大意:见原题. 算法讨论: 设A[i]=q[i],B[i]=1/(i^2). 设 ...

  5. BZOJ 3527 [Zjoi2014] 力

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

  6. P3338 [ZJOI2014]力 FFT + 推式子

    传送门 文章目录 题意: 思路: 题意: 思路: 这个式子看起来很FFTFFTFFT,让我们来化简一下. 考虑EEE中直接将qiq_iqi​约掉,所以Ei=∑j=1i−1qj(i−j)2−∑j=i+1 ...

  7. P3338 [ZJOI2014]力 [FFT]

    P3338[ZJOI2014]力P3338 [ZJOI2014]力P3338[ZJOI2014]力 给出n个数qi,给出Fj的定义如下: Fj=∑i<jqiqj(i−j)2−∑i>jqiq ...

  8. 【BZOJ】3527: [Zjoi2014]力(fft+卷积)

    http://www.lydsy.com/JudgeOnline/problem.php?id=3527 好好的一道模板题,我自己被自己坑了好久.. 首先题目看错.......什么玩意.......首 ...

  9. BZOJ3527:[ZJOI2014]力(FFT)

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

最新文章

  1. 拉格朗日乘数法的原理,我用10幅图把它讲清楚了
  2. MySQL基础篇:用户和权限管理
  3. Mac 安装HomeBrew 出错
  4. POJ 1696 Space Ant(极角排序)【计算几何】
  5. JeePlus左树右表之 表单【右表】自动获取列表【左树 】中的id
  6. 快速幂、矩阵快速幂、快速乘法
  7. linux 开源邮件 系统,4 个开源的命令行邮件客户端
  8. 动画库Animate.css
  9. 一直跳出来 visual_只练开合跳一个动作,会瘦吗?
  10. python的numpy库结构_NumPy构成了数据科学领域中许多Python库的基础。
  11. 利用linux打造工科男的办公娱乐利器 ——以centos为例
  12. ckfinder php 漏洞,编辑器漏洞
  13. 玩qq游戏提示计算机内存不足,win10系统玩游戏提示“计算机内存不足”怎么办...
  14. Windows下使用Git+rsync构建文件同步工具
  15. 程序员需要知道的97件事情之 ------- 谋定而后动
  16. 实验3:利用SVM实现线性高斯分类
  17. MOS管的finger和multiplier
  18. 脆弱性和安全风险分析
  19. 原生JS实现动态返回顶部
  20. HTML制作宣传片,如何制作一部好的宣传片

热门文章

  1. STM32F4 LTDC学习
  2. 胜利大逃亡[HDU1253]
  3. 成功EDM电子邮件营销的要素和目标分析
  4. javascript原生代码取单选框的值
  5. MYSQL 最大连接数设置
  6. Centos 7系统目录结构
  7. OSChina 周六乱弹 ——属于程序员的情话
  8. android 抽屉关闭时的卡顿
  9. kernel: segfault at *** rip *** rsp *** error
  10. 怎样定义函数,调用函数