[ZJOI2014]力 题解
传送门
题意:给出nnn个数qiq_iqi,定义Fj=∑i<jqiqj(i−j)2−∑i>jqiqj(i−j)2F_j=\sum\limits_{i<j}\frac{q_iq_j}{(i-j)^2}-\sum\limits_{i>j}\frac{q_iq_j}{(i-j)^2}Fj=i<j∑(i−j)2qiqj−i>j∑(i−j)2qiqj,令Ei=FiqiE_i=\frac{F_i}{q_i}Ei=qiFi,求EiE_iEi
Ei=∑j=1i−1qj(i−j)2−∑j=i+1nqj(i−j)2E_i=\sum\limits_{j=1}^{i-1}\frac{q_j}{(i-j)^2}-\sum\limits_{j=i+1}^n\frac{q_j}{(i-j)^2}Ei=j=1∑i−1(i−j)2qj−j=i+1∑n(i−j)2qj
设Ai=∑j=1i−1qj(i−j)2,Bi=∑j=i+1nqj(i−j)2A_i=\sum\limits_{j=1}^{i-1}\frac{q_j}{(i-j)^2},B_i=\sum\limits_{j=i+1}^n\frac{q_j}{(i-j)^2}Ai=j=1∑i−1(i−j)2qj,Bi=j=i+1∑n(i−j)2qj,分开求
设fi=1i2f_i=\frac{1}{i^2}fi=i21,并规定f0=0f_0=0f0=0,那么Ai=∑j+k=iqjfkA_i=\sum\limits_{j+k=i}q_jf_kAi=j+k=i∑qjfk,FFT求卷积即可
如果设pi=qn−ip_i=q_{n-i}pi=qn−i即把qqq翻转,那么
Bi=∑j=1n−iqj+ij2=∑j=1n−ipn−i−jj2=∑j+k=n−ipjfkB_i=\sum\limits_{j=1}^{n-i}\frac{q_{j+i}}{j^2}=\sum\limits_{j=1}^{n-i}\frac{p_{n-i-j}}{j^2}=\sum\limits_{j+k=n-i}p_jf_kBi=j=1∑n−ij2qj+i=j=1∑n−ij2pn−i−j=j+k=n−i∑pjfk,FFT求卷积即可
#include <cstdio>
#include <cmath>
#include <algorithm>const int maxn = 1e5 + 207;
const double pi = acos(-1.0);struct Complex {double a, b;Complex(double x, double y) : a(x), b(y) {}Complex() : Complex(0.0, 0.0) {}
};
inline Complex operator+(const Complex &lhs, const Complex &rhs) {return Complex(lhs.a + rhs.a, lhs.b + rhs.b);
}
inline Complex operator-(const Complex &lhs, const Complex &rhs) {return Complex(lhs.a - rhs.a, lhs.b - rhs.b);
}
inline Complex operator*(const Complex &lhs, const Complex &rhs) {return Complex(lhs.a * rhs.a - lhs.b * rhs.b, lhs.a * rhs.b + lhs.b * rhs.a);
}int r[maxn << 2], lim, l, n;
Complex a[maxn << 2], b[maxn << 2], c[maxn << 2];inline void fft(Complex *A, int tp) {for (int i = 0; i < lim; ++i)if (i < r[i]) std::swap(A[i], A[r[i]]);for (int mid = 1; mid < lim; mid <<= 1) {Complex wn = Complex(cos(pi / mid), tp * sin(pi / mid));for (int j = 0; j < lim; j += mid << 1) {Complex w = Complex(1, 0);for (int k = 0; k < mid; ++k, w = w * wn) {Complex x = A[j + k], y = w * A[j + k + mid];A[j + k] = x + y;A[j + k + mid] = x - y;}}}if (tp == -1) {for (int i = 0; i < lim; ++i)A[i] = Complex(A[i].a / lim, 0);}
}int main() {scanf("%d", &n);for (int i = 1; i <= n; ++i) {scanf("%lf", &a[i].a);b[n - i].a = a[i].a;}for (int i = 1; i <= n; ++i)c[i].a = 1.0 / i / i;for (lim = 1; lim <= n << 1; lim <<= 1, ++l);for (int i = 0; i < lim; ++i)r[i] = (r[i >> 1] >> 1) | ((i & 1) << (l - 1));fft(a, 1); fft(b, 1); fft(c, 1);for (int i = 0; i <= lim; ++i)a[i] = a[i] * c[i], b[i] = b[i] * c[i];fft(a, -1); fft(b, -1);for (int i = 1; i <= n; ++i)printf("%.5lf\n", a[i].a - b[n - i].a);return 0;
}
[ZJOI2014]力 题解相关推荐
- BZOJ3527: [Zjoi2014]力
BZOJ3527: [Zjoi2014]力 Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行 ...
- 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, ...
- P3338 [ZJOI2014]力 FFT + 推式子
传送门 文章目录 题意: 思路: 题意: 思路: 这个式子看起来很FFTFFTFFT,让我们来化简一下. 考虑EEE中直接将qiq_iqi约掉,所以Ei=∑j=1i−1qj(i−j)2−∑j=i+1 ...
- P3338 [ZJOI2014]力
P3338 [ZJOI2014]力 卷积 + FFT 题意 思路 Code(921ms) 传送门: https://www.luogu.com.cn/problem/P3338 题意 Fj=∑i=1j ...
- P3338 [ZJOI2014]力 [FFT]
P3338[ZJOI2014]力P3338 [ZJOI2014]力P3338[ZJOI2014]力 给出n个数qi,给出Fj的定义如下: Fj=∑i<jqiqj(i−j)2−∑i>jqiq ...
- [卷积系列] 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} ...
- 【BZOJ 3527】 [Zjoi2014]力
3527: [Zjoi2014]力 Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi ...
- BZOJ 3527: [ZJOI2014]力(FFT)
题意 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \frac{q_iq_j}{(i-j)^2}-\sum \limi ...
- 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- ...
最新文章
- 怎么把圆角变直角_明式圆角柜的还原(下)——信民木工DIY达人大赛作品
- Android日志系统分析之开篇
- 硬盘由于io设备错误无法运行此项请求_移动硬盘坏了真倒霉,祸不单行U盘也坏了,数据怎么存储才安全?...
- esp8266单片机透传_ESP8266通过MQTT接入Home Assistant
- pythonmax对字符_(MAX第五篇)Python--字符串操作(三)
- centos系统下安装python3以及pip3
- Qt Creator添加动态dynamics
- PHP+Mysql高仿百度知道签到源码演示与下载
- afx_msg函数意思
- MIK C语言面试两题
- 李宏毅老师ML_HW1——PM2.5预测
- js文件,同样的路径,拷贝过来的为什么不能访问
- javascript回调函数及推论
- pytest测试框架(二)---fixture介绍
- Html5 小球键盘移动
- spring 配置文件被加载两次
- (二)pscc学习笔记
- 浅谈人机工程应用在数字化工艺中的作用
- 吾爱破解python就业班_我吾 区别
- nginx实现ip138查询当前ip功能,配置文件实现接口
热门文章
- 有事的一天,小事一大堆......
- 面向对象开发期末复习概述(七)
- 《数据科学入门》(Data Science from Scratch)读书笔记
- hexo(sakura)给博客增添侧边栏(回到顶部,跳转评论,深色模式,播放音乐)Valine-1.4.4新版本尝鲜+个性制定(表情包、qq头像、UI样式)
- mysql函数 优化_Mysql函数求优化解决思路
- 电话交换机和网络交换机_网络中交换机的介绍和工作
- 正确的洗澡顺序,据说99%的人都是错的。。
- python字符串常见方法
- java的常量和变量_JAVA-常量和变量
- check the manual that corresponds to your MySQL server version for the right