题目链接

\(Descripiton\)
  给出\(q[\ ]\),\[F[j]=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2}\]
  令\(E_i=\frac{F_i}{q_i}\),求所有\(E[i]\)。

\(Solution\)
  这的挺详细了,我再写遍。
  (下标从0开始,\(n=n-1\))
  可以把\(q_j\)约去,即\[E_j=\sum_{i=0}^{j-1}\frac{q_i}{(i-j)^2}-\sum_{i=j+1}^n\frac{q_i}{(i-j)^2}\]
  令\(f[i]=q[i],g[i]=\frac{1}{i^2}\),规定\(g[0]=0\),那么
\[E_j=\sum_{i=0}^{j-1}f[i]*g[j-i]-\sum_{i=j+1}^nf[i]*g[j-i]\]
  (注意是个平方)
  左边\(\sum_{i=0}^{j-1}f[i]*g[j-i]=\sum_{i=0}^{j}f[i]*g[j-i]\)就是卷积的形式,可以直接算。
  右边
\[ \begin{aligned} \sum_{i=j+1}^nf[i]*g[j-i]&=\sum_{i=j}^nf[i]*g[j-i]\\ &=\sum_{i=0}^{n-j}f[i+j]*g[i] \end{aligned} \]
  反转\(f[\ ]\),令\(h[n-j-i]=f[i+j]\),那么\[\sum_{i=0}^{n-j}f[i+j]*g[i]=\sum_{i=0}^{n-j}h[n-j-i]*g[i]\]
  令\(X_{n-j}=\sum_{i=0}^{n-j}h[n-j-i]*g[i]\),也用FFT计算就可以了。
  最后\(E_j=\sum_{i=0}^{j-1}f[i]*g[j-i]-X_{n-j}\)。

  还有种常数更优的方法?

//15204kb   3140ms
#include <cmath>
#include <cstdio>
#include <algorithm>
const int N=263000;//2^{18}=262144 > 2*1e5
const double PI=acos(-1);int n;
double q[N];
struct Complex
{double x,y;Complex() {}Complex(double x,double y):x(x),y(y) {}Complex operator + (const Complex &a)const{return Complex(x+a.x, y+a.y);}Complex operator - (const Complex &a)const{return Complex(x-a.x, y-a.y);}Complex operator * (const Complex &a)const{return Complex(x*a.x-y*a.y, x*a.y+y*a.x);}
}f[N],g[N],h[N];void FFT(Complex *a,int lim,int opt)
{for(int i=0,j=0; i<lim; ++i){if(i>j) std::swap(a[i],a[j]);for(int l=lim>>1; (j^=l)<l; l>>=1);}for(int i=2; i<=lim; i<<=1){int mid=i>>1;Complex Wn(cos(PI/mid),opt*sin(PI/mid)),t;
//      Complex Wn(cos(2.0*PI/i),opt*sin(2.0*PI/i)),t;for(int j=0; j<lim; j+=i){Complex w(1,0);for(int k=0; k<mid; ++k,w=w*Wn)a[j+mid+k]=a[j+k]-(t=w*a[j+mid+k]),a[j+k]=a[j+k]+t;}}if(opt==-1)for(int i=0; i<lim; ++i) a[i].x/=lim;
}int main()
{scanf("%d",&n), --n;int lim=1;while(lim <= n<<1) lim<<=1;for(int i=0; i<=n; ++i) scanf("%lf",&q[i]);for(int i=0; i<=n; ++i) f[i]=Complex(q[i],0);for(int i=0; i<=n; ++i) h[i]=Complex(q[n-i],0);for(int i=1; i<=n; ++i) g[i]=Complex(1.0/i/i,0);g[0]=Complex(0,0);FFT(f,lim,1), FFT(g,lim,1), FFT(h,lim,1);for(int i=0; i<lim; ++i) f[i]=f[i]*g[i], h[i]=h[i]*g[i];FFT(f,lim,-1), FFT(h,lim,-1);for(int i=0; i<=n; ++i) printf("%.3lf\n",f[i].x-h[n-i].x);return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/8991435.html

BZOJ.3527.[ZJOI2014]力(FFT)相关推荐

  1. bzoj 3527 [Zjoi2014]力——FFT

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

  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. Java连接数据库警告WARN: Establishing SSL connection without server's identity ......
  2. Mongo DB 2.6 需要知道的一些自身限定
  3. python 学习笔记(08)
  4. 新型攻击接踵而来 思科Talos解析Jaff勒索软件
  5. send和WSASend区别
  6. c语言编程平均分,用C语言编程平均分数
  7. SpringMVC之数据传递三Ajax与Controller交互
  8. 特斯拉明年会有100万辆自动驾驶出租车 你敢坐吗?
  9. Perl 模块 Getopt::Std 和 Getopt::Long
  10. Daily scrum[2013.12.02]
  11. SQL数据表中按中文数字一二三四五排序
  12. CIO40:IT人22-30岁职业规划
  13. Idea编译:Java找不到符号
  14. HADOOP的搭建和配置(一)基础环境配置
  15. 设计模式---原型模式
  16. python中offset的意思_python覆盖从offset1到offset2的字节
  17. “画仓鼠” 大赛,正式回归了!
  18. Spring Cloud(十七):高并发设计
  19. 马尔科夫链原理介绍【通俗易懂】
  20. Linux下定时删除指定目下n天前的文件

热门文章

  1. 2022-2028年中国联合办公行业深度调研及投资前景预测报告
  2. 2019秋招面试常考题目
  3. 路由器远程登陆配置:02多人登陆一台设备
  4. detach detach_ pytorch
  5. TVM量化路线图roadmap
  6. OFRecord 图片文件制数据集
  7. Amazon SageMaker和NVIDIA NGC加速AI和ML工作流
  8. CPU的自动调度矩阵乘法
  9. NVIDIA A100 GPUs上硬件JPEG解码器和NVIDIA nvJPEG库
  10. Laravel中Redis的配置和使用