Loading

萌新的莫反练习笔记

萌新的莫反练习笔记

简单的数论函数

恒等函数 \(I(n)=1\)

元函数 \(e(n)=[n=1]\)

单位函数 \(id(n)=n\)

狄利克雷卷积

我们设 \(f\)\(g\) 的卷积 \(f\ast g=F\)。卷积还是一个函数。

那么,\(F(n)=\sum_{d|n}f(d)g(\frac{n}{d})\)

这就是卷积。

显然,\(e\ast f=f\)。所以 \(e\) 是卷积的单位元。

常用的性质

  • \(f\ast g=g\ast f\)
  • \((f\ast g)\ast h=g\ast (f\ast h)\)
  • \(f\)\(g\) 为积性函数,则 \(f∗g\) 为积性函数。
  • \(\varphi\ast I=id\)

莫反

考虑现在有两个函数 \(f\)\(F\)\(F=f\ast I\)

如果 \(f\) 易求,我们可以容易地求出 \(F\)

但是如果 \(F\) 易求,我们考虑如何求出 \(f\)

我们在等式两边卷上 \(I\) 的逆元即可。

\(I\) 的逆元就是 \(\mu\),即 \(I\ast\mu=e\)

所以 \(f=F\ast\mu\)

然后就可以求出 \(f\) 了。可以使用整除分块等实现。

这就是莫反。

P2158 [SDOI2008] 仪仗队

考虑什么样的人不会被挡住。

我们给每个人分配一个坐标,从 \((0,0)\)\((n-1,n-1)\)

那么,所有 \(gcd(x,y)=1\) 的点就能被看到。

那么,我们要求 \(\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=1]\)

开始我们炫酷的计算:

\[\begin{align} &\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)=1]\nonumber\\ =&\sum_{i=1}^n\sum_{j=1}^ne(gcd(i,j))\nonumber\\ \end{align} \]

考虑 \(e=I\ast\mu\)

\[\begin{align} &\sum_{i=1}^n\sum_{j=1}^ne(gcd(i,j))\nonumber\\ =&\sum_{i=1}^n\sum_{j=1}^n\sum_{d|gcd(i,j)}\mu(d)\nonumber\\ =&\sum_{i=1}^n\sum_{j=1}^n\sum_{d|i,d|j}\mu(d)\nonumber\\ \end{align} \]

考虑先枚举 \(d\)

\[\begin{align} &\sum_{i=1}^n\sum_{j=1}^n\sum_{d|i,d|j}\mu(d)\nonumber\\ =&\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{n}{d}\rfloor}\mu(d)\nonumber\\ =&\sum_{d=1}^n\left\lfloor\frac{n}{d}\right\rfloor\left\lfloor\frac{n}{d}\right\rfloor\mu(d)\nonumber\\ \end{align} \]

整除分块解决即可。

P3455 [POI2007] ZAP-Queries

考虑只枚举 \(d\) 的倍数,然后套用上面的式子即可。

P2257 YY的GCD

考虑枚举每个质数,算上面的那个东西。

稍微动动脑子发现复杂度不超过 \(O(n\log n)\)

查看题解可得复杂度 \(O(\frac{n}{\log n})\)

P2522 [HAOI2011] Problem b

考虑上面求出的是一个二维前缀和的答案,现在要求矩形,那不是简简单单。

直接套用上面的即可。

P3327 [SDOI2015] 约数个数和

有结论 \(d(nm)=\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=1]\)

考虑感性证明,如果 \(gcd(i,j)>1\) 会算重,不能算。

我们考虑推这个式子。

\[\begin{align} &\sum_{i=1}^n\sum_{j=1}^md(ij)\nonumber\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{x=1}^i\sum_{y=1}^j[gcd(i,j)=1]\nonumber\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{x=1}^i\sum_{y=1}^j\sum_{d|x,d|y}\mu(d)\nonumber\\ =&\sum_{d=1}^n\mu(d)\sum_{i=1}^n\sum_{j=1}^m\sum_{x=1}^{\lfloor\frac{i}{d}\rfloor}\sum_{y=1}^{\lfloor\frac{j}{d}\rfloor}1\nonumber\\ =&\sum_{d=1}^n\mu(d)\sum_{i=1}^n\left\lfloor\frac{i}{d}\right\rfloor\sum_{j=1}^m\left\lfloor\frac{j}{d}\right\rfloor\nonumber\\ \end{align} \]

\(s(n)=\sum_{i=1}^n\left\lfloor\frac{i}{d}\right\rfloor\),显然,我们可以整除分块预预处理出 \(s\)

然后就做完了,复杂度 \(O(n\sqrt{n}+T\sqrt{n})\)

P1829 [国家集训队] Crash的数字表格 / JZPTAB

直接推式子。

\[\begin{align} &\sum_{i=1}^n\sum_{j=1}^mlcm(i,j)\nonumber\\ =&\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{gcd(i,j)}\nonumber\\ =&\sum_{d=1}^n\sum_{i=1}^n\sum_{j=1}^m\frac{ij}{d}[gcd(i,j)=d]\nonumber\\ =&\sum_{d=1}^n\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}ijd[gcd(i,j)=1]\nonumber\\ =&\sum_{d=1}^nd\sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}ij\sum_{k|i,k|j}\mu(k)\nonumber\\ =&\sum_{d=1}^nd\sum_{k=1}^{\lfloor\frac{n}{d}\rfloor}k^2\mu(k)\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor}ij\nonumber\\ =&\sum_{k=1}^nk^2\mu(k)\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}d\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{kd}\rfloor}j\nonumber\\ \end{align} \]

后面那两项都是等差数列求和,可以 \(O(1)\) 算。

考虑到我们只对 \(k\) 做整除分块肯定是不行的,所有我们在对 \(k\) 做整除分块的同时对 \(d\) 做整除分块,也就是整除分块套整除分块。

\(x^2\mu(x)\) 可以直接筛出。

最终复杂度为 \(O(\sqrt{n}\times\sqrt{n}+n)=O(n)\)

AT_agc038_c [AGC038C] LCMs

比上一题多了个限制,\(j>i\)

我们直接改上面的式子:

\[\sum_{k=1}^nk^2\mu(k)\sum_{d=1}^{\lfloor\frac{n}{k}\rfloor}d\sum_{i=1}^{\lfloor\frac{n}{kd}\rfloor}i\sum_{j=i+1}^{\lfloor\frac{m}{kd}\rfloor}j\nonumber\\ \]

容易发现后面就是个上三角矩阵求和,用整体减去对角线即可。

时空复杂度不变。

P6156 简单题P6222 「P6156 简单题」加强版

你需要的不是我,而是一篇好的题解。

CYJian 的题解

GoPoux4 的题解

加强版卡空间,但是取模是自然溢出,直接#define int unsigned int即可。

开摆

写不动了,就到这吧

(◉ω◉υ)⁼³₌₃

posted @ 2024-03-13 18:56  洛谷Augury  阅读(5)  评论(0编辑  收藏  举报