分析

整理得下式:

\[E_i=\sum_{j<i}{\frac{q_i}{(i-j)^2}}-\sum_{j>i}{\frac{q_i}{(i-j)^2}}
\]

假设\(n=5\),考虑这两个数组:

\(a:q_1 \quad q_2 \quad q_3 \quad q_4 \quad q_5\)

\(b:-\frac{1}{16} \quad -\frac{1}{9} \quad -\frac{1}{4} \quad -\frac{1}{1} \quad 0 \quad \frac{1}{1} \quad \frac{1}{4} \quad \frac{1}{9} \quad \frac{1}{16}\)

容易发现\(E\)数组是把\(a,b\)数组看做多项式各项系数作卷积后一些项的系数。

FFT即可。

代码

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <complex>
#define rin(i,a,b) for(int i=(a);i<=(b);i++)
#define rec(i,a,b) for(int i=(a);i>=(b);i--)
#define trav(i,a) for(int i=head[(a)];i;i=e[i].nxt)
using std::cin;
using std::cout;
using std::endl;
typedef long long LL;
typedef std::complex<double> Complex; const int MAXN=100005;
const double pi=3.14159265358979;
int n,m,len;
int rev[MAXN<<3];
Complex a[MAXN<<3],b[MAXN<<3]; inline void fft(Complex *c,int dft){
rin(i,0,n-1) if(i<rev[i])
std::swap(c[i],c[rev[i]]);
for(int mid=1;mid<n;mid<<=1){
int r=(mid<<1);
Complex u=(Complex){cos(pi/mid),dft*sin(pi/mid)};
for(int l=0;l<n;l+=r){
Complex v=1;
for(int i=0;i<mid;i++,v*=u){
Complex x=c[l+i],y=v*c[l+mid+i];
c[l+i]=x+y;
c[l+mid+i]=x-y;
}
}
}
if(dft==-1) rin(i,0,n-1)
c[i]/=n;
} int main(){
scanf("%d",&n);
n--;
rin(i,0,n){
double x;
scanf("%lf",&x);
a[i]=x;
}
m=(n<<1);
rin(i,0,m){
if(i<n) b[i]=-1.0/(n-i)/(n-i);
else if(i==n) b[i]=0;
else b[i]=1.0/(i-n)/(i-n);
}
int nn=n;
for(m+=n,n=1;n<=m;n<<=1) len++;
rin(i,1,n-1) rev[i]=((rev[i>>1]>>1)|((i&1)<<(len-1)));
fft(a,1);
fft(b,1);
rin(i,0,n-1) a[i]*=b[i];
fft(a,-1);
n=nn;
rin(i,n,n+n) printf("%.10lf\n",a[i].real());
return 0;
}

最新文章

  1. svm训练显示信息说明
  2. 《JavaScript权威指南》学习笔记 第六天 开始学习DOM了。
  3. 蓝牙—逻辑链路控制和适配协议(L2CAP)
  4. Json对象与Json字符串互转
  5. Windows phone 8 学习笔记(6) 多任务(转)
  6. [GitPython]使用python管理你的git库
  7. J2SE知识点摘记(二)
  8. Esper学习之五:EPL语法(一)
  9. JNLP(Java Web Start )(转)
  10. 【01背包】HDU 2546 饭卡
  11. MFC通过ODBC连接Mysql程序
  12. Servlet之Session处理
  13. javascript之自定义数组工具对象
  14. 神经网络6_CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)概念区分理解
  15. springmvc webservlet 加redis 订阅消息
  16. mac环境下intellij的自定义配置文件位置
  17. 通用shellcode
  18. CodeForces760B
  19. si4438 cca 侦听
  20. javascript不同类型数据之间的运算是如何转换的

热门文章

  1. CentOS安装部署sha##dow**socks
  2. 一个简单的dns服务器
  3. Ansible-playbook服务器初始化
  4. SET ANSI_NULL ON 和 SET QUOTED_IDENTIFIFR ON
  5. java8--- Predicate 意义 代码
  6. 使用electron实现百度网盘悬浮窗口功能!
  7. MFC- socket 编程
  8. 在webpack中配置.vue组件页面的解析
  9. CSS中的伪类和为伪元素
  10. Redis5新特性