传送门

首先化简原式$$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$$

把所有\(q_j\)提出来,则显然$$E_j=\sum_{i<j}\frac{q_i}{(i-j)2}-\sum_{i>j}\frac{q_i}{(i-j)2}$$$$E_j=...-\frac{q_{j-2}}{22}-\frac{q_{j-1}}{12}+0+\frac{q_{j+1}}{12}+\frac{q_{j+2}}{22}...$$

然后设多项式\(A,B\),其中\(A[i]=q_{i+1}(0\le i<n)\)\(,B[i]=\frac{1}{(i-(n-1))|i-(n-1)|}(0\le i<2n-1)(B[n-1]=0)\),然后把\(A,B\)乘起来,答案要求的\(E_i\)也就是多项式的第\(n-2+i\)项的系数

#include<bits/stdc++.h>
#define LL long long
#define db double
#define il inline
#define re register using namespace std;
const int N=100000+10,M=550000+10;
const db pi=acos(-1);
il int rd()
{
int x=0,w=1;char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
struct comp
{
db r,i;
comp(){r=i=0;}
comp(db nr,db ni){r=nr,i=ni;}
il comp operator + (const comp &bb) const {return comp(r+bb.r,i+bb.i);}
il comp operator - (const comp &bb) const {return comp(r-bb.r,i-bb.i);}
il comp operator * (const comp &bb) const {return comp(r*bb.r-i*bb.i,r*bb.i+i*bb.r);}
}a[M],b[M];
int n,m,nn,l,rdr[M];
void fft(comp *a,int op)
{
comp W,w,x,y;
for(int i=0;i<nn;++i) if(i<rdr[i]) swap(a[i],a[rdr[i]]);
for(int i=1;i<nn;i<<=1)
{
W=comp(cos(pi/i),sin(pi/i)*op);
for(int j=0;j<nn;j+=i<<1)
{
w=comp(1,0);
for(int k=0;k<i;++k,w=w*W)
{
x=a[j+k],y=w*a[j+k+i];
a[j+k]=x+y,a[j+k+i]=x-y;
}
}
} } int main()
{
n=rd();
for(int i=0;i<n;++i) scanf("%lf",&a[i].r);
m=-1;
for(int i=-n+1;i<=n-1;++i) b[++m].r=1/(db)i/fabs(i);
b[n-1].r=0;
m+=n-1;
for(nn=1;nn<=m;nn<<=1) ++l;
for(int i=0;i<nn;++i) rdr[i]=(rdr[i>>1]>>1)|((i&1)<<(l-1));
fft(a,1),fft(b,1);
for(int i=0;i<nn;++i) a[i]=a[i]*b[i];
fft(a,-1);
for(int i=n-1;i<n+n-1;i++) printf("%.3lf\n",a[i].r/nn);
return 0;
}

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

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

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

  2. [Luogu]P3338 [ZJOI2014]力(FFT)

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

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

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

  4. [洛谷P3338] [ZJOI2014]力

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

  5. P3338 [ZJOI2014]力(FFT)

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

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

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

  7. P3338 [ZJOI2014]力

    思路 颓柿子的题目 要求求这样的一个式子 \[ F_j=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_j}{(i-j)^2} ...

  8. 洛咕 P3338 [ZJOI2014]力

    好久没写过博客了.. 大力推式子就行了: \(E_i=\sum_{j<i}\frac{q_j}{(i-j)^2}+\sum_{j>i}\frac{q_j}{(j-i)^2}\) 那么要转化 ...

  9. 洛谷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}$ ...

随机推荐

  1. CF132E Bits of merry old England

    解:略一思索:网络流啊!(别问我是怎么想到的......) 发现跟志愿者招募有点像.于是把图建一下,在下面开一条通道,但是每个点又都要经过,这时我们就无脑上下界一波. 通道向点连边,有费用.每个点向它 ...

  2. vue2.0获取自定义属性的值

    最近在项目中使用了vue.js.在爬坑的路上遇到了很多问题.这里都会给记录下来,今天要说的是怎么获取自定义属性的值. HTML <!DOCTYPE html> <html> & ...

  3. flask Blueprint蓝图

    首先要了解蓝图的作用,模拟场景在团队开发过程中团队每个人都在写自己负责的功能模块,那多个py文件模板,我们如果完成后需要运行是不是要运行多个服务?但是我们的项目是一个整体,而不是零散的,所以我们怎么把 ...

  4. Java 存储时间戳的几种方式

    有时需要记录一下数据生成时间的时间戳,精确到秒,这里记录一下java存储时间戳字符串的几种方式 1.DateFormat private static final SimpleDateFormat s ...

  5. jmeter-实用插件

    1.官网下载插件管理工具 https://jmeter-plugins.org/downloads/all/ 2.将jar包放在jmeter的 lib/ext文件夹下 3.重启jmeter 4.点击“ ...

  6. Shell 同步时间脚本

    Linux系统同步时间脚本 Linux操作系统,如果时间和网络时间差距太大的话.可能会导致程序,进程启动不了.所以linux系统时间同步显得尤为重要,本文在借鉴网上众多资料后,以centos_6.X系 ...

  7. bank_card.js

    function init() { undefined = "undefined"; mkCClist(); } function ccchk(cdi) { output1 = & ...

  8. 2Servlet笔记

    1.静态页面(html) 2.动态 用户可以输入数据,和页面交互. 3 BS和CS的区别 BS :Browser Server(WEB 服务器)   CS : Client(qq tcp/ip协议) ...

  9. 2017-12-14python全栈9期第一天第六节之用户交互

    9,用户交互.input 1,等待输入, 2,将你输入的内容赋值给了前面变量. 3,input出来的数据类型全部是str 10,基础数据类型初始.数字:int 12,3,45 + - * / ** % ...

  10. JAVA核心技术I---JAVA基础知识

    一:class类 (一)文件规则 1.Java文件必须以.java作为扩展名 2.一个Java文件只能有一个public class 3.public class的名字必须和文件名字一样,大小写都要完 ...