【数论】杜教筛

    xiaoxiao2021-03-25  87

    今年的GDKOI居然考了反演,还要用杜教筛,狠狠的把我骇了一跳, 回来在51nod上随便点开几题看起来像是反演的题,发现都是要用杜教筛(这RP~), 好吧好吧,那就学杜教筛咯~

    杜教筛的套路

    有几个大家都很熟悉的式子: ∑ d ∣ n μ ( d ) = [ n = 1 ] \sum_{d|n}\mu(d)=[n=1] dnμ(d)=[n=1] 根据这个,再写出一个式子: ∑ i = 1 n ∑ d ∣ i μ ( d ) = 1 \sum_{i=1}^n\sum_{d|i}\mu(d)=1 i=1ndiμ(d)=1 ∑ i = 1 n ∑ j = 1 ⌊ n i ⌋ μ ( j ) = 1 \sum_{i=1}^n\sum_{j=1}^{\lfloor\frac{n}{i}\rfloor}\mu(j)=1 i=1nj=1inμ(j)=1 那么: ∑ i = 1 n μ ( i ) = 1 − ∑ i = 2 n ∑ j = 1 ⌊ n i ⌋ μ ( j ) \sum_{i=1}^n\mu(i)=1-\sum_{i=2}^n\sum_{j=1}^{\lfloor\frac{n}{i}\rfloor}\mu(j) i=1nμ(i)=1i=2nj=1inμ(j) 于是 μ \mu μ的前缀和就可以求了, 其他就是乘了一些奇怪的数也差不多是这样化(见后文)。

    记得加上哈希记忆化。 其实并不用哈希, 我们发现,因为我们预处理了至少 n \sqrt n n 个, 所以我们要算的所有的数都是小于 n \sqrt n n 的, 当我们在计算n的答案时,在计算过程中所要访问的所有数x,它的 n / x n/x n/x的值都是唯一的, 所以我们就直接用 n / x n/x n/x作为它的哈希值, 计算下一个答案时再清空即可,

    关于狄利克雷卷积的先挖坑(逃) #复杂度 杜教筛的复杂度: O ( n 2 3 ) O(n^{\frac{2}{3}}) O(n32) 然而我并不会证明QwQ 转载唐老师的博客


    【51nod 1244】莫比乌斯函数之和 求: ∑ i = a b μ ( i ) \sum_{i=a}^b\mu(i) i=abμ(i) 这个直接求出1b的减去1(a-1)的即可。

    #其他例题 例题里面会有杜教筛其他情况的详细讲解(按难度排序) 【51nod 1239】欧拉函数之和 【BZOJ 3944】Sum(双倍经验) 【51nod 1237】最大公约数之和 V3 【51nod 1238】最小公倍数之和 V3 【51NOD 1227】平均最小公倍数(双倍经验)

    转载请注明原文地址: https://ju.6miu.com/read-24580.html

    最新回复(0)