[ZJOI2014]力(FFT)】的更多相关文章

bzoj3527: [Zjoi2014]力 fft 链接 bzoj 思路 但是我们求得是 \(\sum\limits _{i<j} \frac{q_i}{(i-j)^2}-\sum_{i>j}\frac{q_i}{(i-j)^2}\) \(\sum\limits _{i<j} \frac{q_i}{(i-j)^2}\) \(\sum\limits _{i=1}^{j-1} q_i*\frac{1}{(j-i)^2}\) fft都能算出来 \(\sum\limits _{i=j+1}^{n…
[参考]「ZJOI2014」力 - FFT by menci [算法]FFT处理卷积 [题解]将式子代入后,化为Ej=Aj-Bj. Aj=Σqi*[1/(i-j)^2],i=1~j-1. 令f(i)=qi,g(i)=1/i^2,定义f(0)=g(0)=0(方便卷积). Aj=Σf(i)*g(j-i),i=0~j-1,标准的卷积形式. 而对于Bj,将g反转后就是和为i+n-1的标准卷积形式了. 第一次FFT后,记得对a数组后半部分清零后再进行第二次FFT. 复杂度O(n log n). #incl…
题目 P3338 [ZJOI2014]力 做法 普通卷积形式为:\(c_k=\sum\limits_{i=1}^ka_ib_{k-i}\) 其实一般我们都是用\(i=0\)开始的,但这题比较特殊,忽略那部分,其他的直接按下标存下来,反正最后的答案是不变的 好了步入正题吧,我们定义 \[F_j=\sum\limits_{i<j}\dfrac{q_iq_j}{(i-j)^2}-\sum\limits_{i<j}\dfrac{q_iq_j}{(i-j)^2}\] 求\(E_i=\dfrac{F_i}…
2016-06-01  21:36:44 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 我就是一个大傻叉 微笑脸 #include<bits/stdc++.h> #define inf 1000000000 #define ll long long #define N 500005 using namespace std; int read(){ ,f=;char ch=getchar(); ;ch=getchar();} +c…
我们看一下这个函数,很容易就把他化为 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了 最近发现自…
题面 题解: \[F_j = \sum_{i < j}\frac{q_iq_j}{(i - j)^2} - \sum_{i > j}{\frac{q_iq_j}{(i - j)^2}}\] \[E_j = \sum_{i < j}\frac{q_i}{(i - j)^2} - \sum_{i > j}{\frac{q_i}{(i - j)^2}}\] 对式子的2个部分分别计算. 令\(S_i = i^2\) \[\sum_{i < j}\frac{q_i}{(i - j)^2…
题目: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<…
题目: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)…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3527 首先卷积的形式是$h(i)=\sum_{i=0}^jf(i)g(i-j)$,如果我们可以把式子整理成这个样子再套上FFT就成功了. $$E_i=\sum_{j<i}\frac{q_j}{(j-i)^2}-\sum_{j>i}\frac{q_j}{(i-j)^2}$$ $$E_i=\sum_{j=0}^{i-1}\frac{q_j}{(j-i)^2}^2-\sum_{j=0}^{n…