CF585E Present for Vitalik the Philatelist 题解 / 狄利克雷卷积学习笔记
:::::info[题目基本信息]
考察:莫比乌斯函数,狄利克雷卷积(
题目简介:
给定
-
\displaystyle x\in[1,n],S\subseteq\bigcup_{i=1}^n\{i\},x\notin S -
\displaystyle\gcd_{i\in S}a_i>1,\gcd(\gcd_{i\in S}a_i,a_x)=1
数据范围:
-
2\le n\le 5\times 10^5 -
\forall i\in[1,n],2\le a_i\le 10^7 ::::: 令
f_d 表示\{a_n\} 中与d 互质的数的个数,g_d 表示可重集\displaystyle\bigcup_{i=1}^n\{a_i\} 的非空子集中最大公约数恰好为d 的个数。那么最后答案就为\displaystyle\sum_{i=2}^Vf_ig_i ,其中V 是a_i 的值域。
先进行f_d 的推导:\begin{aligned}f_d&=\sum_{i=1}^V[\gcd(i,d)=1]t_i\\&=\sum_{i=1}^V\sum_{d_2\mid\gcd(i,d)}\mu(d_2)t_i\\&=\sum_{d_2\mid d}\mu(d_2)\sum_{d_2\mid i}t_i\end{aligned} 其中
t_i 表示\{a_n\} 中i 的出现次数,即\displaystyle t_i=\sum_{j=1}^n[a_j=i] 。
令\displaystyle F_d=\sum_{d|i}t_i,F'(d)=\mu(d)F_d ,那么\displaystyle f_d=\sum_{d_2\mid d}F'(d_2) 。
再对g_d 推导:
不妨令G_d 为可重集\displaystyle\bigcup_{i=1}^n\{a_i\} 的非空子集中最大公约数为d 的倍数个数,注意到G_d=2^{F_d}-1 。
那么就有\displaystyle G_d=\sum_{d_2\mid d}g_{d_2} 。
那么现在我们要求下面类型的式子:
注意到他们是狄利克雷卷积的形式。
:::::success[狄利克雷卷积]
模板题
我们考虑到我们可以在计算
于是我们要优化我们的高维前缀和,我们考虑对于每一维做一次一维前缀和,然后正确性显然,但由于没有容斥所以时间复杂度在维数较高时大大降低。
此时,时间复杂度就为
:::::
同时注意到
时间复杂度为
::::success[讲解]
注意到
所以
时间复杂度为
::::
2 号题目
::::info[闲话]
被 DS 薄纱了......
::::
::::success[讲解]
容易发现这道题的式子是有强制性要求转移顺序的,我们必须从前往后转移
注意到一个性质:
-
\displaystyle d\mid k,d\ne k\Rightarrow d\le\frac{k}{2}
这个性质启示我们倍增,或者叫二进制分组,将
在此前我们也遇到了许多类似分组处理的思想,比如:
- CF710(EDU16) 题解 中 F 题二进制分组。
- 后面应该还有,但我懒得翻 4 页的题解。
为了方便,我们令
下面是 DS 写的算法过程:
注意 DS 所写有一定错误,比如“对每个素数
时间复杂度为
::::
后面可能还会有添加。
咕咕咕。
:::::