好久没写过博客了。。

大力推式子就行了:

\(E_i=\sum_{j<i}\frac{q_j}{(i-j)^2}+\sum_{j>i}\frac{q_j}{(j-i)^2}\)

那么要转化成卷积的形式对吧,设\(f(i)=q_i,g(i)=\frac{1}{i^2}\)

\(E_i=\sum_{j<i}f(j)g(i-j)+\sum_{j>i}f(j)g(j-i)\)

直接NTT就行了。

#include<bits/stdc++.h>
#define il inline
#define vd void
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-')f=-1;
ch=getchar();
}
while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
return x*f;
}
typedef std::complex<double> cp;
const double pi=acos(-1);
double q[100010];
int rev[1<<19];
cp A[1<<19],B[1<<19],omg[1<<19],inv[1<<19];
double ans[100010];
il vd fft(cp*A,int n,cp*omg){
for(int i=0;i<n;++i)if(rev[i]>i)std::swap(A[i],A[rev[i]]);
for(int o=1;o<n;o<<=1)
for(cp*p=A;p!=A+n;p+=o<<1)
for(int i=0;i<o;++i){
cp t=omg[n/(o<<1)*i]*p[i+o];
p[i+o]=p[i]-t,p[i]+=t;
}
}
int main(){
int n=gi();
for(int i=1;i<=n;++i)scanf("%lf",&q[i]);
int N=1,lg=0;while(N<(n+2)*2)N<<=1,++lg;
for(int i=0;i<N;++i)rev[i]=(rev[i>>1]>>1)|((i&1)<<lg-1);
for(int i=0;i<N;++i)omg[i]=cp(cos(2*pi*i/N),sin(2*pi*i/N)),inv[i]=conj(omg[i]); for(int i=1;i<=n;++i)A[i]=1.0/i/i;
for(int i=1;i<=n;++i)B[i]=q[i];
fft(A,N,omg),fft(B,N,omg);
for(int i=0;i<N;++i)A[i]*=B[i];
fft(A,N,inv);
for(int i=0;i<N;++i)A[i]/=N;
for(int i=1;i<=n;++i)ans[i]=A[i].real(); memset(A,0,sizeof A);memset(B,0,sizeof B);
std::reverse(q+1,q+n+1);
for(int i=1;i<=n;++i)A[i]=1.0/i/i;
for(int i=1;i<=n;++i)B[i]=q[i];
fft(A,N,omg),fft(B,N,omg);
for(int i=0;i<N;++i)A[i]*=B[i];
fft(A,N,inv);
for(int i=0;i<N;++i)A[i]/=N;
for(int i=1;i<=n;++i)ans[n-i+1]-=A[i].real(); for(int i=1;i<=n;++i)printf("%.3lf\n",ans[i]);
return 0;
}

洛咕 P3338 [ZJOI2014]力的更多相关文章

  1. [洛谷P3338] [ZJOI2014]力

    洛谷题目链接:P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \[F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_ ...

  2. 洛谷 P3338 [ZJOI2014]力 解题报告

    P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \(F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j ...

  3. 洛谷P3338 [ZJOI2014]力(FFT)

    传送门 题目要求$$E_i=\frac{F_i}{q_i}=\sum_{j=1}^{i-1}\frac{q_j}{(i-j)^2}-\sum_{j=i+1}^n\frac{q_j}{(j-i)^2}$ ...

  4. 洛谷 P3338 [ZJOI2014]力

    题意简述 读入\(n\)个数\(q_i\) 设\(F_j = \sum\limits_{i<j}\frac{q_i\times q_j}{(i-j)^2 }-\sum\limits_{i> ...

  5. [bzoj3527] [洛谷P3338] [Zjoi2014]力

    Description 给出n个数qi,给出Fj的定义如下: \[ F_j=\sum\limits_{i<j} \frac{q_iq_j}{(i-j)^2} - \sum\limits_{i&g ...

  6. [Luogu P3338] [ZJOI2014]力 (数论 FFT 卷积)

    题面 传送门: 洛咕 BZOJ Solution 写到脑壳疼,我好菜啊 我们来颓柿子吧 \(F_j=\sum_{i<j}\frac{q_i*q_j}{(i-j)^2}-\sum_{i>j} ...

  7. P3338 [ZJOI2014]力(FFT)

    题目 P3338 [ZJOI2014]力 做法 普通卷积形式为:\(c_k=\sum\limits_{i=1}^ka_ib_{k-i}\) 其实一般我们都是用\(i=0\)开始的,但这题比较特殊,忽略 ...

  8. P3338 [ZJOI2014]力 /// FFT 公式转化翻转

    题目大意: https://www.luogu.org/problemnew/show/P3338 题解 #include <bits/stdc++.h> #define N 300005 ...

  9. luogu P3338 [ZJOI2014]力

    传送门 首先化简原式\[F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2},E_j=F_j/q_j\ ...

随机推荐

  1. linux克隆机器

    首先你要先点击你的虚拟机点击克隆: 然后执行这个 vim /etc/sysconfig/network-scripts/ifcfg-eth0 去这里修改这两行 然后注释了 然后再执行这个 > / ...

  2. qmake

    https://blog.csdn.net/m0_37876745/article/details/78537556

  3. LinkedHashSet 元素唯一,存储取出有序

      package cn.itcast_04; import java.util.LinkedHashSet; /* * LinkedHashSet:底层数据结构由哈希表和链表组成. * 哈希表保证元 ...

  4. Python实现向s3共享存储上传和下载文件

    #!/usr/bin/env python #-*- encoding: utf8 -*- import boto import boto.s3.connection from boto.s3.key ...

  5. jquery环形3D立体旋转特效

      jquery环形3D立体旋转特效 作者/代码整理:站长素材  (转载请附加本文地址,带有“懒人原生”字样的谢绝转载)发布日期:2013-07-20   立体效果比较强的jquery特效,周围小图组 ...

  6. 打造自己的移动绿色版 Python 环境

    本文只适用 Windows 系统,Linux,Mac 或其他系统可以直接自己写个脚本安装就好了,甚至大部分系统自带. 相信某些人写好了Python程序结果给朋友运行又得装个Python环境,难免失去了 ...

  7. CF893F:Subtree Minimum Query(线段树合并)

    Description 给你一颗有根树,点有权值,m次询问,每次问你某个点的子树中距离其不超过k的点的权值的最小值.(边权均为1,点权有可能重复,k值每次询问有可能不同,强制在线) Input 第一行 ...

  8. P1710 地铁涨价

    题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...

  9. 20145203盖泽双 《Java程序设计》第6周学习总结

    20145203盖泽双 <Java程序设计>第6周学习总结 教材学习内容总结 1.如果要将数据从来源中取出,可以使用输入串流,若将数据写入目地, 可以使用输出串流.在java中,输入串流代 ...

  10. html手机网页自适应宽度

    #在head之间加如下代码即可 <meta name="viewport" content="width=device-width, initial-scale=1 ...