正题

题目链接:https://www.luogu.com.cn/problem/P3338


题目大意

Fj=∑i=1j−1qi∗qj(i−j)2−∑i=j+1nqi∗qj(i−j)2F_j=\sum_{i=1}^{j-1}\frac{q_i*q_j}{(i-j)^2}-\sum_{i=j+1}^n\frac{q_i*q_j}{(i-j)^2}Fj​=i=1∑j−1​(i−j)2qi​∗qj​​−i=j+1∑n​(i−j)2qi​∗qj​​
Ej=FjqjE_j=\frac{F_j}{q_j}Ej​=qj​Fj​​


解题思路

显然有Fj=∑i=1j−1qi(i−j)2−∑i=j+1nqi(i−j)2F_j=\sum_{i=1}^{j-1}\frac{q_i}{(i-j)^2}-\sum_{i=j+1}^n\frac{q_i}{(i-j)^2}Fj​=i=1∑j−1​(i−j)2qi​​−i=j+1∑n​(i−j)2qi​​
然后定义ai=qi,bi=1i2a_i=q_i,b_i=\frac{1}{i^2}ai​=qi​,bi​=i21​,那么有
Fj=∑i=1j−1ai∗bj−i−∑i=j+1nai∗bi−jF_j=\sum_{i=1}^{j-1}a_i*b_{j-i}-\sum_{i=j+1}^{n}a_i*b_{i-j}Fj​=i=1∑j−1​ai​∗bj−i​−i=j+1∑n​ai​∗bi−j​
前面那个式子显然可以卷积,然后后面那个式子把aaa数组翻转之后就和前面那个一样了。

然后FFTFFTFFT优化即可,时间复杂度O(nlog⁡n)O(n\log n)O(nlogn)。

才发现有complexcomplexcomplex这个库,终于不用手写复数运算了(不知道比赛能不能用)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<complex>
#define Pi acos(-1)
using namespace std;
typedef complex<double> comp;
const int N=3e5+10;
/*struct comp{double x,y;
};
complex operator +(complex a,complex b)
{return (complex){a.x+b.x,a.y+b.y};}
complex operator -(complex a,complex b)
{return (complex){a.x-b.x,a.y-b.y};}
complex operator *(complex a,complex b)
{return (complex){a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x};}*/
int n,r[N],z;
comp a1[N],a2[N],b1[N],b2[N];
void fft(comp *f,int op){for(int i=0;i<n;i++)if(i<r[i])swap(f[i],f[r[i]]);for(int p=2;p<=n;p<<=1){int len=p>>1;comp tmp(cos(Pi/len),sin(Pi/len)*op);
//      printf("%lf ",tmp.real()); for(int k=0;k<n;k+=p){comp buf(1,0);for(int i=k;i<k+len;i++){comp tt=buf*f[len+i];f[len+i]=f[i]-tt;f[i]=f[i]+tt;buf=buf*tmp;}}}if(op==-1)for(int i=0;i<n;i++)f[i]/=n;return;
}
int main()
{scanf("%d",&n);int l;z=n;for(int i=1;i<=n;i++){double x;scanf("%lf",&x);a1[i]=a2[n-i+1]=x;b1[i]=b2[i]=(double)1.0/i/i;}for(l=1;l<=n*2;l<<=1);n=l;for(int i=0;i<n;i++)r[i]=(r[i>>1]>>1)|((i&1)?n>>1:0);fft(a1,1);fft(b1,1);for(int i=0;i<n;i++)a1[i]=a1[i]*b1[i];fft(a1,-1);fft(a2,1);fft(b2,1);for(int i=0;i<n;i++)a2[i]=a2[i]*b2[i];fft(a2,-1);for(int i=1;i<=z;i++)printf("%.3lf\n",a1[i].real()-a2[z-i+1].real());return 0;
}

P3338-[ZJOI2014]力【FFT】相关推荐

  1. P3338 [ZJOI2014]力 FFT + 推式子

    传送门 文章目录 题意: 思路: 题意: 思路: 这个式子看起来很FFTFFTFFT,让我们来化简一下. 考虑EEE中直接将qiq_iqi​约掉,所以Ei=∑j=1i−1qj(i−j)2−∑j=i+1 ...

  2. P3338 [ZJOI2014]力 [FFT]

    P3338[ZJOI2014]力P3338 [ZJOI2014]力P3338[ZJOI2014]力 给出n个数qi,给出Fj的定义如下: Fj=∑i<jqiqj(i−j)2−∑i>jqiq ...

  3. P3338 [ZJOI2014]力 —— FFT

    题目链接:点我啊╭(╯^╰)╮ 题目大意: 解题思路: Ei=Fiqi=∑j=1i−1qj(i−j)2−∑j=i+1nqj(i−j)2E_i=\frac{F_i}{q_i} = \sum_{j=1}^ ...

  4. P3338 [ZJOI2014]力(FFT)

    P3338 [ZJOI2014]力 Fj=∑i=1j−1qi×qj(i−j)2−∑i=j+1nqi×qj(i−j)2Ej=∑i=1j−1qi(i−j)2−∑i=j+1nqi(i−j)2f(i)=qi, ...

  5. P3338 [ZJOI2014]力

    P3338 [ZJOI2014]力 卷积 + FFT 题意 思路 Code(921ms) 传送门: https://www.luogu.com.cn/problem/P3338 题意 Fj=∑i=1j ...

  6. [卷积系列] P3338 [ZJOI2014]力

    P3338 [ZJOI2014]力 Ej=Fjqj=∑i=1j−1qi(i−j)2−∑i=j+1nqi(i−j)2E_j= \frac{F_{j}}{q_{j}} =\sum_{i=1}^{j-1} ...

  7. BZOJ.3527.[ZJOI2014]力(FFT)

    题目链接 \(Descripiton\) 给出\(q[\ ]\),\[F[j]=\sum_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum_{i>j}\frac{q_iq_ ...

  8. BZOJ3527:[ZJOI2014]力(FFT)

    Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi ...

  9. BZOJ3527: [Zjoi2014]力 [FFT]

    化简之后,发现减号左边的式子是一个卷积.右边的式子,把一个函数倒序就是卷积,分别FFT,求解答案. 大佬blog: https://blog.csdn.net/kyleyoung_ymj/articl ...

  10. bzoj3527: [Zjoi2014]力 fft

    题意:求\(E_i=\sum_{j=1}^{i-1}qj/{(i-j)^2}-\sum_{j=i+1}^{n}qj/{(i-j)^2}\) 题解:构造前几个Ei,可以发现\(E_i=a_i*b_{j- ...

最新文章

  1. 谷歌为语言AI模型推TensorFlow.Text
  2. html页面关闭前提示信息,【转】表单提交及关闭当前页面并刷新数据
  3. 深入理解javascript原型和闭包(2)——函数和对象的关系
  4. Win2008 R2 IIS7.5+PHP5(FastCGI)+MySQL5环境搭建教程
  5. 边缘提取和场景分割 学派?
  6. 人工智能数学基础知识
  7. liunx系统不能登陆的问题
  8. ajax实现多级联动菜单,jquery 实现二级/三级/多级联动菜单的思路及代码
  9. 【数据库系统设计】DBMS的数据库保护
  10. (转)MTK softkey流程 必看
  11. 总结篇——mysql中使用sql语句操作表字段
  12. Audiority TS-1 Transient Shaper for Mac(TS-1瞬态整形器)
  13. FL Studio新手教程:FL Studio五大常用按钮介绍
  14. 冒烟测试流程图和测试数据准备
  15. word批量转换为pdf python脚本
  16. 易鲸捷数据库(EsgynDB)常用SQL
  17. 神经网络反向传播BP算法代码实现
  18. 介绍5款非常棒的移动自动化测试工具
  19. mac安装appium时执行appium-doctor命令提示command not found: appium-doctor
  20. c语言结构体简单试题,C语言6结构体练习题6

热门文章

  1. c语言用递归法判断回文字符串,递归方式判断一个字符串是否为回文字符串
  2. 敲黑板!vue3重点!一文了解Composition API新特性:ref、toRef、toRefs
  3. [JS-BOM]BOM_Window窗口对象
  4. [Java基础]异常概述与异常处理
  5. 含根号的导数怎么求_数学分析Mathematical Analysis笔记整理 第四章 导数与微分
  6. python文件图标变成小电脑_手把手教你给Python程序写图形界面,并且打包成exe文件-exe文件...
  7. 数据结构---邻接矩阵的BFS
  8. C - Maximize GCD(简单数论)
  9. E. Mocha and Stars(莫比乌斯反演、简单dp)
  10. G. Xor-MST(异或最小生成树)