化简之后,发现减号左边的式子是一个卷积。右边的式子,把一个函数倒序就是卷积,分别FFT,求解答案。

大佬blog: https://blog.csdn.net/kyleyoung_ymj/article/details/51721495

#include <bits/stdc++.h>
#define pi acos(-1.0)
const int maxn = 300000+5;
using namespace std;
struct E{double real,imag;E(double real=0,double imag=0):real(real),imag(imag){}friend E operator +(E A,E B){return E(A.real+B.real,A.imag+B.imag);}friend E operator -(E A,E B){return E(A.real-B.real,A.imag-B.imag);}friend E operator *(E A,E B){return E(A.real*B.real-A.imag*B.imag,A.imag*B.real+A.real*B.imag);}
};
int n,m,L,rev[maxn];
E f[maxn],rf[maxn],g[maxn],e1[maxn],e2[maxn];
void fft(E *a,int ty){for(int i=0;i<n;++i)if(i<rev[i])swap(a[i],a[rev[i]]);for(int i=1;i<n;i<<=1){E wn=E(cos(pi/i),ty*sin(pi/i));for(int p=(i<<1),j=0;j<n;j+=p){E w(1,0);for(int k=0;k<i;++k,w=w*wn){E x=a[j+k],y=w*a[j+k+i];a[j+k]=x+y;a[j+k+i]=x-y;}}}if(ty==-1)for(int i=0;i<n;++i)a[i].real/=n;
}
int main(){scanf("%d",&n);--n;for(int i=0;i<=n;++i){double x;scanf("%lf",&x);f[i] = x;rf[n-i] = x;}for(int i=1;i<=n;++i)g[i]=1.0/i/i;//g[0]=0m=n*2;for(n=1;n<=m;n<<=1)L++;for(int i=0;i<n;++i)rev[i]=(rev[i>>1]>>1)|((i&1)<<(L-1));fft(f,1);fft(rf,1);fft(g,1);for(int i=0;i<n;++i)e1[i]=f[i]*g[i];for(int i=0;i<n;++i)e2[i]=rf[i]*g[i];fft(e1,-1);fft(e2,-1);for(int i=0;i<=m/2;++i)printf("%.3f\n",e1[i].real-e2[m/2-i].real);
}

  

看起来是个简单题,可是第二部分的卷积形式,推了半天都不对。。。结果直接。学的网上写法。。。然而这题想到fft,就真的简单。

转载于:https://www.cnblogs.com/RRRR-wys/p/8965556.html

BZOJ3527: [Zjoi2014]力 [FFT]相关推荐

  1. BZOJ3527:[ZJOI2014]力(FFT)

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

  2. 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- ...

  3. BZOJ3527: [Zjoi2014]力

    BZOJ3527: [Zjoi2014]力 Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行 ...

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

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

  5. P3338 [ZJOI2014]力 [FFT]

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

  6. 【ZJOI2014】【BZOJ3527】 力 (FFT)

    Description 给出序列 {qi} \{q_i\},求 Ei=∑j<iqj(i−j)2−∑j>iqj(i−j)2 E_i = \sum_{ji}\frac{q_j}{(i-j)^2 ...

  7. [bzoj3527][Zjoi2014]力

    来自FallDream的博客,未经允许,请勿转载,谢谢. 给定n(n<=100000)个数qi 求Ei=Fi/qi 题解:首先约去所有的qi,然后就是一个卷积了,Ai=qi,Bi=1/i^2搞一 ...

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

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

  9. bzoj 3527 [Zjoi2014]力——FFT

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 把 q[ i ] 除掉.设 g[ i ] = i^2 ,有一半的式子就变成卷积了:另一 ...

最新文章

  1. 35国,14年,世界最大科学项目,「人造太阳」即将诞生!
  2. Debian 6 7 8 utc时间设置
  3. shell-变量的数值计算
  4. 用servlet类返回WEB-INF中的页面
  5. 通过Github创建Android库供其他项目依赖引用
  6. 字中字效果-html5实例
  7. Python 入门到精通(—)初识Python
  8. mysql_real_connect阻塞_mysql_real_connect 参数注意-阿里云开发者社区
  9. Linux中的任务调度
  10. 防雷探测器在建筑物中的要求
  11. 父与子一起学python3_父与子的编程之旅:与小卡特一起学python
  12. 计算机车辆识别检测毕业设计,车辆识别论文,关于基于计算机网络技术的车辆识别技术相关参考文献资料-免费论文范文...
  13. 串口RS232的学习
  14. f(x)和g(x)分别是概率密度函数,h(x)=f(x)g(x)还会是概率密度函数么?
  15. sunos与linux区别,linux与solaris的联系与区别总结:命令的异同
  16. 国内下载android源码,Android国内源码下载——亲测成功-Go语言中文社区
  17. 冒险岛的服务器维护时间,冒险岛官方网站(MapleStory)-爱我就来冒险吧!
  18. 一键关闭wi-fi蓝牙捷径_如何在Windows中使用键盘或桌面快捷方式打开或关闭Wi-Fi...
  19. activemq + jaxa +tomcat
  20. 推荐一些提高学习工作效率的电脑工具软件(一)

热门文章

  1. Java pdf文件传输_java中pdf文件的管理(pdf文件转png文件,base64传输文件以及删除)...
  2. 算法设计与分析——贪心算法——汽车加油问题
  3. 7-3 最短路径 (20 分)(分支限界+思路+详解)
  4. [C++11]独占的智能指针unique_ptr的删除器
  5. [Java网络编程基础]TCP发送和接收数据
  6. 激光炸弹(二维前缀和问题)
  7. 大一计算机上机考试第七套,国家开放大学电大《计算机组网技术》机考第七套题库及答案.doc...
  8. 7-10 逆波兰表达式求值 (20 分)(c语言)(数据结构)
  9. 深入理解 Spring Boot Starters 原理(手写Spring boot Start)
  10. POJ1742 Coins(DP)