P3700 [CQOI2017]小 Q 的表格(gcd/整除分块/分块)
I_am_Accepted
·
·
题解
这题黑?2.04s 抢到最优解。
题面给的两个条件就是辗转相除(减),进一步当 \gcd(x',y')=\gcd(x,y),则
\frac{f(x,y)}{xy}=\frac{f(x',y')}{x'y'}
恒成立。
所以变量只有 \forall x\in[1,n]\cap\mathbb Z,f(x,x)。
对于询问有
&
\sum_{i=1}^m\sum_{j=1}^mf(i,j)
\\=&
\sum_{i=1}^mf(i,i)\sum_{j=1}^{\lfloor m/i\rfloor}\sum_{k=1}^{\lfloor m/i\rfloor}jk[\gcd(j,k)=1]
\\=&
\sum_{i=1}^mf(i,i)\sum_{j=1}^{\lfloor m/i\rfloor}j^2\varphi(j)
\end{aligned}
后面可以线性筛线性预处理,前面按除 m 的商整除分块。
块长取 $\sqrt n$,复杂度 $O(n+m\sqrt n)$。