洛咕 P3338 [ZJOI2014]力
好久没写过博客了。。
大力推式子就行了:
\(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]力的更多相关文章
- [洛谷P3338] [ZJOI2014]力
洛谷题目链接:P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \[F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_ ...
- 洛谷 P3338 [ZJOI2014]力 解题报告
P3338 [ZJOI2014]力 题目描述 给出n个数qi,给出Fj的定义如下: \(F_j = \sum_{i<j}\frac{q_i q_j}{(i-j)^2 }-\sum_{i>j ...
- 洛谷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}$ ...
- 洛谷 P3338 [ZJOI2014]力
题意简述 读入\(n\)个数\(q_i\) 设\(F_j = \sum\limits_{i<j}\frac{q_i\times q_j}{(i-j)^2 }-\sum\limits_{i> ...
- [bzoj3527] [洛谷P3338] [Zjoi2014]力
Description 给出n个数qi,给出Fj的定义如下: \[ F_j=\sum\limits_{i<j} \frac{q_iq_j}{(i-j)^2} - \sum\limits_{i&g ...
- [Luogu P3338] [ZJOI2014]力 (数论 FFT 卷积)
题面 传送门: 洛咕 BZOJ Solution 写到脑壳疼,我好菜啊 我们来颓柿子吧 \(F_j=\sum_{i<j}\frac{q_i*q_j}{(i-j)^2}-\sum_{i>j} ...
- P3338 [ZJOI2014]力(FFT)
题目 P3338 [ZJOI2014]力 做法 普通卷积形式为:\(c_k=\sum\limits_{i=1}^ka_ib_{k-i}\) 其实一般我们都是用\(i=0\)开始的,但这题比较特殊,忽略 ...
- P3338 [ZJOI2014]力 /// FFT 公式转化翻转
题目大意: https://www.luogu.org/problemnew/show/P3338 题解 #include <bits/stdc++.h> #define N 300005 ...
- 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\ ...
随机推荐
- Python基础第一篇-------python的介绍
一.python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...
- 关于php优化 你必须知道的一些事情
1. 用单引号代替双引号来包含字符串,这样做会更快一些.因为 PHP 会在双引号包围的 字符串中搜寻变量,单引号则不会,注意:只有 echo 能这么做,它是一种可以把多个字符 串当作参数的“函数”(译 ...
- September 29th 2017 Week 39th Friday
Human life is ephemera, which makes it precious. 生命短暂,所以珍贵. Don't waste time on praying to the God. ...
- VRSProcess(二)
1._beginthreadex再谈 Windows操作系统提供了这样的一种解决方案——每个线程都将拥有自己专用的一块内存区域来供标准C运行库中所有有需要的函数使用.而且这块内存区域的创建就是由C/C ...
- 【Jenkins持续集成】好用的插件集合
1. Promoted Builds Plugin 这个插件在job构建成功后,依据设置条件(仅手动执行/成功时执行等),执行操作(操作和构建过程基本类似),这样我们就可以在构建之后有机会执行拉分支. ...
- 51 nod 1682 中位数计数
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1682 1682 中位数计数 基准时间限制:1 秒 空间限制: ...
- SOJ 4580 动态规划之01背包 (01背包)
Description Sidney想去Gandtom家玩.但Sidney家和Gandtom家之间是高低不平.坑坑洼洼的土路.所以他需要用他的背包装几袋稀的泥,在路上铺平一些干的土,使路变成平整的泥土 ...
- [HAOI2018]奇怪的背包
题目 暴力\(dp\)好有道理啊 于是我们来个反演吧 考虑一个体积序列\(\{v_1,v_2,...v_n\}\)能凑成\(w\)的条件 显然是 \[v_1x_1+v_2x_2+...+v_nx_n\ ...
- npm发布插件步骤
开发好一个插件后,要想让其他人也能使用该插件需要将插件发布到npm上,具体步骤如下: 1.添加npm用户: npm adduser Username: your name Password: your ...
- Selenium 设置代理chrome
1.1. 连接无用户名密码认证的代理 from selenium import webdriver chromeOptions = webdriver.ChromeOptions() chromeOp ...