关于莫比乌斯反演与除法枚举

背景

某只蒟蒻叫做LittlePrincess,有一天他学会了莫比乌斯反演,但是他做题总发现自己的反演和别人的暴力是一个世界复杂度!蒟蒻十分伤心,于是钻研dalao博客。dalao:剩下的就是个 n n 的除法分块了。这令蒟蒻十分蒙蔽,决心一探究竟——终于在万能的群友的帮助下….

例题:YY的GCD

我们经过GCD的历练发现我们将 ij(gcd(i,j)==d) ∑ i ∑ j ( g c d ( i , j ) == d ) 设为f(n),而将 ij(gcd(i,j)==dint)) ∑ i ∑ j ( g c d ( i , j ) == d ∗ i n t ) ) 设为F(n)

易得:

F(n)=n|df(d) F ( n ) = ∑ n | d f ( d )

根据莫比乌斯反演:

f(n)=n|dμ(dn)F(d) f ( n ) = ∑ n | d μ ( d n ) F ( d )

我们将边界a缩为 [ad] [ a d ] 即我们要求 f(1) f ( 1 )

然后

f(1)=i=1μ(d)F(d) f ( 1 ) = ∑ i = 1 μ ( d ) F ( d )

可以化图验证一下 [ad] [ a d ] 中任意一个A和 [bd] [ b d ] 中任意一个B,A*d<=a,B*d<=b,且AB满足F(d):
得:

F(d)=adbd F ( d ) = a d ∗ b d

——

f(1)=i=1μ(i)aibi f ( 1 ) = ∑ i = 1 μ ( i ) a i ∗ b i

但是对于d不唯一时我们可以枚举质数p

ans=pi=1μinipmip a n s = ∑ p ∑ i = 1 μ ( i ) n i p ∗ m i p

T=ip T = i p

则有

ans=p|Tμ(Tp)T=1nTmT a n s = ∑ p | T μ ( T p ) ∑ T = 1 n T ∗ m T

然后dalao们就摆出一行代码

for(int i=1,j;i<=n;i=j+1)
    {
        j=min(n/(n/i),m/(m/i));
        ans+=(LL)(n/i)*(LL)(m/i)*(LL)(sum[j]-sum[i-1]); 
    }

像我这种蒟蒻肯定看不懂啦!然后我就找了很多博客和问dalao最终!

详解除法枚举

假设我们枚举 nTmT n T ∗ m T 只需要 O(2(n+m) O ( 2 ( n + m ) ) 时间复杂度,这个我显然不会证(写个暴力验证一下不就行了,非要严格数学证明干嘛)
然后我们处理前面那块(dalao博客里都证明过是调和级数的logn*素数个数的 nlogn n l o g n )的前缀和也可以不超时完成。
最后!我们耐心的写一下这些东西设n==10
i : 1 2 3 4 5 6 7 8 9 10
μ: 1 -1 -1 0 -1 1 -1 0 0 1
sum: 略
[ni] [ n i ] :10 5 3 2 2 1 1 1 1 1
我们能枚举出来的就是这最后一行所以我们要对{1},{2},{3},{4,5},{6,7,8,9,10}分块处理
然后我们又有一个神奇的性质:并且对于i,⌊n⌊ni⌋⌋是i被n除并下取整取值相同的一段区间的右端点
这是啥意思呢?
我举个 栗子
[ni]==2 [ n i ] == 2 时它的集合右边界是不是就是5 那么 [n[ni]] [ n [ n i ] ] 就=5,哇好神奇?
Q:怎么证明?
A:写个暴力跑一天
那么这些dalao的代码就可以理解了从n开始枚举 j就是上个右边界 i-j的范围就是当前处理的集合!
哇!终于搞懂了,希望能给像我一样的蒟蒻带来帮助~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值