莫比乌斯反演总结

1|0[国家集训队] Crash的数字表格 / JZPTAB

i=1nj=1mlcm(i,j)=i=1nj=1mk|i,j[gcd(i,j)=k]×ijk=kmin(n,m)k×i=1nkij=1mkj×[gcd(i,j)=1]=kmin(n,m)k×i=1nkij=1mkje|i,jμ(e)=kmin(n,m)k×emin(nk,mk)μ(e)×i=1nkej=1mkeij=kmin(n,m)k×emin(nk,mk)μ(e)(1+nke)×nke2(1+mke)×mke2

数论分块套数论分块即可

2|0约数个数和

i=1nj=1md(ij)=i=1nj=1mx|iy|j[gcd(x,y)=1]=xnym[gcd(x,y)=1]inxjmy1=xnym[gcd(x,y)=1]nxny=xnymnxny[gcd(x,y)=1]=xnymnxmyi|x,yμ(i)=imin(n,m)μ(i)xniyminximyi=imin(n,m)μ(i)xninxiymimyi=imin(n,m)μ(i)(xninxi)(ymimyi)

预处理 j=1iij 再套数论分块即可

3|0ZAP-Queries

i=1aj=1b[gcd(i,j)=d]=i=1adj=1bd[gcd(i,j)=1]=i=1adj=1bde|i,jμ(e)=e=1min(ad,bd)μ(e)i=1aedj=1bed1=e=1min(ad,bd)μ(e)aedbed

直接数论分块即可

4|0能量采集

原问题即求

(2×i=1nj=1mgcd(i,j))nm

其中

i=1nj=1mgcd(i,j)=i=1nj=1mk=1min(n,m)k[gcd(i,j)=k]=k=1min(n,m)k×i=1nj=1m[gcd(i,j)=k]=k=1min(n,m)k×i=1nkj=1mk[gcd(i,j)=1]=k=1min(n,m)k×i=1nkj=1mke|i,jμ(e)=k=1min(n,m)k×e=1min(n,m)kμ(e)i=1nkej=1mke1=k=1min(n,m)k×e=1min(n,m)kμ(e)nkemke

数论分块套数论分块即可

5|0LCMs

number(i)=j=0n1[Aj=i]m=maxj=0n1(Aj)

i=0n2 j=i+1n1 lcm(Ai,Aj)=(i=1mj=1mlcm(i,j)×number(i)×number(j))i=0n1Ai2

其中

i=1mj=1mlcm(i,j)×number(i)×number(j)=i=1mj=1mnumber(i)×number(j)×ijgcd(i,j)=i=1mj=1mnumber(i)×number(j)×kmijk[gcd(i,j)=k]=kmi=1mj=1mnumber(i)×number(j)×ijk[gcd(i,j)=k]=kmk×i=1mkj=1mknumber(ik)×number(jk)×ij[gcd(i,j)=1]=kmk×i=1mkj=1mknumber(ik)×number(jk)×ije|i,jμ(e)=kmk×emkμ(e)×e2i=1mkej=1mkenumber(ike)×number(jke)×ij=emμ(e)×e2kmek×i=1mkej=1mkenumber(ike)×number(jke)×ij=emμ(e)×e2kmek×i=1mkenumber(ike)×ij=1mkenumber(jke)×j=emμ(e)×e2kmek×(i=1mkenumber(ike)×i)2

对于每个 ke 记录 i=1mkenumber(ike)×i , 枚举 ek, 看似会超时实则调和级数加主定理

6|0数表

考虑没有限制, 则原题为

i=1nj=1mk|i,jk=i=1nj=1mk|gcd(i,j)k=i=1nj=1mσ(gcd(i,j))=i=1nj=1mk=1min(n,m)σ(k)[gcd(i,j)=k]=k=1min(n,m)i=1nkj=1mkσ(k)[gcd(i,j)=1]=k=1min(n,m)σ(k)i=1nkj=1mke|i,jμ(e)=k=1min(n,m)σ(k)e=1min(nk,mk)μ(e)i=1nkej=1mke1k=1min(n,m)σ(k)e=1min(nk,mk)μ(e)nkemke

但这个样子对于不同的 nm 至少要用 O(nn) 的时间求解, 不满足多组询问的要求, 所以考虑变换, 将常数项往后提

k=1min(n,m)σ(k)e=1min(nk,mk)μ(e)nkemke=imin(n,m)nimik|iσ(k)μ(ik)

这里可以考虑对不同的 i 维护 k|iσ(k)μ(ik) , 并对 i 求前缀和, 这样对于一次操作我们就可以用 O(n) 的时间复杂度去求解。 再考虑题目限制, 即要求 σ(k) 不能超过 a , 那么我们考虑对所有会参与计算的 σ(k)μ(ik) 排序, 因为调和级数, 所以这里时间复杂度是 O(nlog2n) 的, 然后再对询问的 a 排序, 那么每次只会增加一些 σ(k)μ(ik) 可以产生贡献, 我们把刚才的前缀和改为 BIT , 每次就在上面修改和查询即可, 时间复杂度 O(qnlogn+nlog2n)


__EOF__

本文作者FlowerDream
本文链接https://www.cnblogs.com/flower-dream/p/17736506.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   小篪篪  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
Live2D
欢迎阅读『莫比乌斯反演总结』
点击右上角即可分享
微信分享提示