BZOJ 3527: [Zjoi2014]力 FFT_卷积】的更多相关文章

Code: #include <cmath> #include <cctype> #include <cstdio> #include <cstring> #include <string> #include <algorithm> using namespace std; #define setIO(s) freopen(s".in","r",stdin) const int maxn = 3…
Description 求 \(E_i=\sum _{j=0}^{i-1} \frac {q_j} {(i-j)^2}-\sum _{j=i+1}^{n-1} \frac{q_j} {(i-j)^2}\) Sol FFT. 我们可以发现他是一个卷积的形式,每次从\(i^2\) 卷到 \((n-i-1)^2\) . 既然是卷积,那么直接FFT就好了,但是FFT是让指数相等,也就是这里面的下标相等,所以必须要翻转这两个数组其中一个就可以了,随便翻就行. 然后从某一个下下标位置开始输出. Code /…
BZOJ 3527: [ZJOI2014]力(FFT) 题意: 给出\(n\)个数\(q_i\),给出\(Fj\)的定义如下: \[F_j=\sum \limits _ {i < j} \frac{q_iq_j}{(i-j)^2}-\sum \limits _{i >j} \frac{q_iq_j}{(i-j)^2}.\] 令\(E_i=F_i/q_i\),求\(E_i\). 题解: 一开始没发现求\(E_i\)... 其实题目还更容易想了... \[E_i=\sum\limits _{j&l…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3527 题解: FFT求卷积. $$\begin{aligned}E_i&=\frac{F_i}{q_i}\\&=\sum_{k<i}\frac{q_k}{(i-k)^2}-\sum_{k>i}\frac{q_k}{(i-k)^2}\\&=\sum_{k=1}^{n}{q_kP(i-k)}\end{aligned}$$ 其中, $$P(x)=\begin{cases…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 把 q[ i ] 除掉.设 g[ i ] = i^2 ,有一半的式子就变成卷积了:另一半只要翻转一下序列就也变成卷积了. g[ i ] 那个部分FFT过一次之后就不用再FFT了. 注意别在主函数里把全局变量的 len 覆盖了. #include<iostream> #include<cstdio> #include<cstring> #include<…
我们看一下这个函数,很容易就把他化为 E=sigma(aj/(i-j)/(i-j))(i>j)-sigma(aj/(i-j)/(i-j))(j>i) 把它拆成两半,可以发现分子与分母下标相加总为i 也就是说,例如左边, 可以表示成g(x)= f(i)*F(x-i) (i<x) 也就是卷积了 可以轻易的构造出 f(i)= ai F(i)=1/i/i FFT就行了 右边的话,吧f(i)给倒过来就行了 (f(i)=an-i) 最后的答案 ansi=g(i)-G(n-i-1) ok了 最近发现自…
Description 给出n个数qi,给出Fj的定义如下: 令Ei=Fi/qi,求Ei. Input 第一行一个整数n. 接下来n行每行输入一个数,第i行表示qi. n≤100000,0<qi<1000000000 Output n行,第i行输出Ei.与标准答案误差不超过1e-2即可. Sample Input 5 4006373.885184 15375036.435759 1717456.469144 8514941.004912 1410681.345880 Sample Output…
题目大意: 给出n个数\(q_i\)定义 \[f_i = \sum_{i<j}{\frac{q_iq_j}{(i-j)^2}} - \sum_{i>j}\frac{q_iq_j}{(i-j)^2}\] 设\(E_i = \frac{f_i}{q_i}\),求所有的\(E_i\) 题解: 我们把\(f_i\)代入\(E_i\)的表达式中,有 \[E_i = \sum_{i<j}{\frac{q_j}{(i-j)^2}} - \sum_{i>j}\frac{q_j}{(i-j)^2}\…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3527 看了看TJ才推出来式子,还是不够熟练啊: TJ:https://blog.csdn.net/qq_33929112/article/details/54590319 然后竟然想愚蠢地做 n 遍 FFT 呵呵...其实做一遍就够了,得到的数组的角标就是上限. 代码如下: #include<iostream> #include<cstdio> #include<cst…
[题目分析] FFT,构造数列进行卷积,挺裸的一道题目诶. 还是写起来并不顺手,再练. [代码] #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i) #define D(i,j,k)…