【Bzoj3527】【Luogu3338】[Zjoi2014]力(FFT)
题面
题解
先来颓柿子
$$ F_i=\sum_{j<i}\frac{q_iq_j}{(i-j)^2}-\sum_{j>i}\frac{q_iq_j}{(i-j)^2} \\=q_i(\sum_{j<i}\frac{q_j}{(i-j)^2}-\sum_{j>i}\frac{q_j}{(i-j)^2}) $$
所以
$$ E_i=\sum_{j<i}\frac{q_j}{(i-j)^2}-\sum_{j>i}\frac{q_j}{(j-i)^2} $$
令$x_i=\frac{1}{i^2}$
则原式可化为:
$$ E_i=\sum_{j=0}^{i}q_jx_{i-j}-\sum_{j=i+1}^{n-1}q_jx_{j-i} $$
令$p_{n-j-1}=q_j$所以原式又等于
$$ E_i=\sum_{j=0}^{i}q_jx_{i-j}-\sum_{j=i}^{n-1}p_{n-j-1}x_{j-i} \\=\sum_{j=0}^{i}q_jx_{i-j}-\sum_{j=0}^{n-i-1}p_{n-j-i-1}x_{j} $$
然后就变成两个卷积相减了吧。(为了方便,先将$n$减去$1$):
#include <cmath>
#include <cstdio>
#include <algorithm>
using std::swap;
const int N = 3e5 + 10;
const double Pi = acos(-1);
int n, m, r[N], P;
struct C { double x, y; } q[N], p[N], x[N];
C operator + (C a, C b) { return (C){ a.x + b.x, a.y + b.y }; }
C operator - (C a, C b) { return (C){ a.x - b.x, a.y - b.y }; }
C operator * (C a, C b) { return (C){ a.x * b.x - a.y * b.y, a.x * b.y + b.x * a.y }; }
void FFT(C f[], int opt) {
for(int i = 0; i < n; ++i) if(i < r[i]) swap(f[i], f[r[i]]);
for(int len = 1, nl = 2; len < n; len = nl, nl <<= 1) {
C rot = (C){cos(Pi / len), opt * sin(Pi / len)};
for(int l = 0; l < n; l += nl) {
C w = (C){1, 0}; int r = l + len;
for(int k = l; k < r; ++k, w = w * rot) {
C x = f[k], y = w * f[k + len];
f[k] = x + y, f[k + len] = x - y;
}
}
}
}
int main() {
scanf("%d", &n); int tmp = (--n); m = n << 1;
for(int i = 0; i <= n; ++i) scanf("%lf", &q[i].x), p[n - i].x = q[i].x;
for(int i = 1; i <= n; ++i) x[i].x = (double)1.0 / i / i;
for(n = 1; n <= m; n <<= 1, ++P);
for(int i = 0; i < n; ++i) r[i] = (r[i >> 1] >> 1) | ((i & 1) << (P - 1));
FFT(q, 1), FFT(p, 1), FFT(x, 1);
for(int i = 0; i < n; ++i) q[i] = q[i] * x[i], p[i] = p[i] * x[i];
FFT(q, -1), FFT(p, -1);
for(int i = 0; i <= tmp; ++i)
printf("%.3lf\n", q[i].x / n - p[tmp - i].x / n);
return 0;
}
【Bzoj3527】【Luogu3338】[Zjoi2014]力(FFT)的更多相关文章
- 【bzoj3527】[Zjoi2014]力 FFT
2016-06-01 21:36:44 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 我就是一个大傻叉 微笑脸 #include&l ...
- bzoj3527: [Zjoi2014]力 fft
bzoj3527: [Zjoi2014]力 fft 链接 bzoj 思路 但是我们求得是 \(\sum\limits _{i<j} \frac{q_i}{(i-j)^2}-\sum_{i> ...
- 【BZOJ】3527: [Zjoi2014]力 FFT
[参考]「ZJOI2014」力 - FFT by menci [算法]FFT处理卷积 [题解]将式子代入后,化为Ej=Aj-Bj. Aj=Σqi*[1/(i-j)^2],i=1~j-1. 令f(i)= ...
- P3338 [ZJOI2014]力(FFT)
题目 P3338 [ZJOI2014]力 做法 普通卷积形式为:\(c_k=\sum\limits_{i=1}^ka_ib_{k-i}\) 其实一般我们都是用\(i=0\)开始的,但这题比较特殊,忽略 ...
- 【BZOJ3527】[ZJOI2014] 力(FFT)
题目: BZOJ3527 分析: FFT应用第一题-- 首先很明显能把\(F_j\)约掉,变成: \[E_j=\sum _{i<j} \frac{q_i}{(i-j)^2}-\sum_{i> ...
- [BZOJ3527][ZJOI2014]力 FFT+数学
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 首先卷积的形式是$h(i)=\sum_{i=0}^jf(i)g(i-j)$,如果我们 ...
- BZOJ3527[Zjoi2014]力——FFT
题目描述 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. 输入 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi<100000 ...
- 【bzoj3527】 Zjoi2014—力
http://www.lydsy.com/JudgeOnline/problem.php?id=3527 (题目链接) 题意 $${F_i=\sum_{j<i} {\frac{q_iq_j}{( ...
- BZOJ 3527: [Zjoi2014]力(FFT)
我们看一下这个函数,很容易就把他化为 E=sigma(aj/(i-j)/(i-j))(i>j)-sigma(aj/(i-j)/(i-j))(j>i) 把它拆成两半,可以发现分子与分母下标相 ...
- [ZJOI2014]力 FFT
题面 题解: \[F_j = \sum_{i < j}\frac{q_iq_j}{(i - j)^2} - \sum_{i > j}{\frac{q_iq_j}{(i - j)^2}}\] ...
随机推荐
- .NET RabbitMQ
在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这 种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方,比如发送短 ...
- Linux 文件编码问题及iconv命令
iconv命令是运行于linux/unix平台的文件编码装换工具.当我们在linux/unix系统shell查看文本文件时,常常会发现文件的中文是乱码的,这是由于文本文件的编码与当前操作系统设置的编码 ...
- bzoj 2956: 模积和 ——数论
Description 求∑∑((n mod i)*(m mod j))其中1<=i<=n,1<=j<=m,i≠j. Input 第一行两个数n,m. Output 一个整数表 ...
- Web Session 浅入浅出(山东数漫江湖)
使用过几种Web App开发语言和框架,都会接触到Session的概念.即使是一个简单站点访问计数的功能,也常常使用Session来实现的.其他常用的领域还有购物车,登录用户等.但是,对Session ...
- python初步学习-python数据类型之strings(字符串)
数据类型-字符串 字符串是 Python 中最常用的数据类型.我们可以使用引号(''或者"")来创建字符串 var1 = 'Hello World!' var2 = "P ...
- Android控件——ToggleButton多状态按钮(实现灯泡的开关)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxoAAAFxCAIAAAB7jkm1AAAgAElEQVR4nOy9eXgUVb7/Dy7j3BnH8T
- web服务器和数据库服务器不在一台机器上
把localhost改成数据库所在的IP就行了. $link=mysql_connect( "202.195.246.202 ", "root ", " ...
- mysql之安装和配置(一)
环境 oracle linux7.3 数据库:MySQL-5.7.20 mysql的安装 先安装依赖的插件 yum install libaio 去官网下载mysql-5.7.20的tar.gz包: ...
- Django rest framework 限制访问频率(源码分析)
基于 http://www.cnblogs.com/ctztake/p/8419059.html 当用发出请求时 首先执行dispatch函数,当执行当第二部时: #2.处理版本信息 处理认证信息 处 ...
- epoll内核源码分析
转载:https://www.nowcoder.com/discuss/26226?type=0&order=0&pos=27&page=1 /* * fs/eventpo ...