[ZJOI2014]力


\[\begin{split}
E_j=&\sum_{i=1}^{j-1}\frac{q_i}{(i-j)^2}-\sum_{i=j+1}^{n}\frac{q_i}{(i-j)^2}\\
=&\sum_{i=1}^{j}\frac{q_i}{(i-j)^2}-\sum_{i=j}^{n}\frac{q_i}{(i-j)^2}\\
\end{split}\\
\begin{cases}
f_i=q_i\\
g_i=\frac 1{i^2}\\
\end{cases}
\Rightarrow
ansa_i=\sum_{j+k=i}f_j\cdot g_k\\
\begin{cases}
f_i=q_{n-i+1}\\
g_i=\frac 1{i^2}\\
\end{cases}
\Rightarrow
ansb_i=\sum_{j+k=i}f_j\cdot g_k\\
ans_i=ansa_i-ansb_{n+1-i}\\
\]

#include <bits/stdc++.h>
using namespace std; //Start
#define lng long long
#define db double
#define mk make_pair
#define pb push_back
#define fi first
#define se second
#define rz resize
const int inf=0x3f3f3f3f;
const lng INF=0x3f3f3f3f3f3f3f3f; //Data
const int N=4e5;
int n; //FFT
const db Pi=acos(-1);
typedef pair<db,db> cp;
cp operator+(const cp a,const cp b){return mk(a.fi+b.fi,a.se+b.se);}
cp operator-(const cp a,const cp b){return mk(a.fi-b.fi,a.se-b.se);}
cp operator*(const cp a,const cp b){return mk(a.fi*b.fi-a.se*b.se,a.fi*b.se+a.se*b.fi);}
vector<cp> a(N+7),b(N+7),c(N+7);
int lim=1,ln,r[N+7];
void FFT(vector<cp>&f,int t){
for(int i=0;i<lim;i++)if(i<r[i]) swap(f[i],f[r[i]]);
for(int mid=1;mid<lim;mid<<=1){
cp wn(mk(cos(Pi/mid),sin(Pi/mid)*t));
for(int j=0;j<lim;j+=mid<<1){
cp w(mk(1,0));
for(int k=j;k<mid+j;w=w*wn,k++){
cp x(f[k]),y(w*f[mid+k]);
f[k]=x+y,f[mid+k]=x-y;
}
}
}
} //Main
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%lf",&a[i].fi);
b[n+1-i].fi=a[i].fi;
c[i].fi=1.0/db(i)/db(i);
}
while(lim<=(n<<1)) lim<<=1,ln++;
for(int i=0;i<lim;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(ln-1));
FFT(a,1),FFT(b,1),FFT(c,1);
for(int i=0;i<lim;i++) a[i]=a[i]*c[i],b[i]=b[i]*c[i];
FFT(a,-1),FFT(b,-1);
for(int i=0;i<lim;i++) a[i].fi/=lim,b[i].fi/=lim;
for(int i=1;i<=n;i++) printf("%.7lf\n",a[i].fi-b[n+1-i].fi);
return 0;
}

最新文章

  1. PHPExcel按单元格读取数据
  2. ajax返回json在 IE下,提示打开或保存的解决方法
  3. [问题2014S11] 解答
  4. [oracle] update和merge语句的几点写法
  5. NSString的八条实用技巧
  6. 【python练习】截取网页里最新的新闻
  7. 通过strace 监控 fdatasync
  8. Java经典23种设计模式之结构型模式(一)
  9. 策略模式(stragegy)
  10. js 变量作用域
  11. Java虚拟机(五)Java的四种引用级别
  12. C++ 提取网页内容系列之四正则
  13. 【Codeforces 332C】Students&#39; Revenge
  14. Eclipse——Note
  15. Java知多少(58)线程Runnable接口和Thread类详解
  16. 第16章 STM32中断应用概览
  17. 向windows添加环境变量
  18. 2018.09.30 bzoj2223: [Coci 2009]PATULJCI(主席树)
  19. Day24--Part2-伪Ajax(iframe)
  20. 【CC2530强化实训03】定时器间隔定时实现按键长按与短按

热门文章

  1. sklearn.tree.DecisionTreeClassifier 详细说明
  2. JS之DOM(一)
  3. Java初始化静态变量的时间顺序
  4. rbd-mirror新功能
  5. ceph单机多mon的实现
  6. PicGo+jsDelivr+GitHub搭建免费图床,Typora使用图床
  7. Tomcat口令暴力猜解&amp;&amp;后台getshell
  8. 使用SpringBoot进行优雅的数据验证
  9. MathType中如何实现上下两行公式“=”号对齐
  10. CDR中调和工具的使用方法