莫反小测试
得分:105/400,排名未知。
A
得分:65/100。
错因:没有运用解耦的思想(\(d | \gcd(i,j)\) 等价于 \(d | i 且 d | j\)),交换求和顺序不熟练。
正解:
B
得分:40/100
错因:没有想到枚举倍数转化为整除分块,分类讨论不熟练。
正解:
由题目易得 \(\lfloor \frac{a}{b} \rfloor = \frac{a}{b+1}\),因为 \(\lfloor \frac{a}{b} \rfloor\) 为整数,则 \(b+1|a\)。
这个式子很像整除分块,考虑枚举 \(b+1\) 的倍数,则满足条件的 \(a\) 即为 \(\sum_{b=1}^y \lfloor \frac{x}{b+1} \rfloor\),于是做完了......吗?
我们注意到 \(a\) 具有隐含的上界,即 \(\frac{a}{b+1} < b \Rightarrow a < b^2 + b\),故 \(a \in [1,b^2+b-1]\)。
因此,原先的式子应当变为 \(\sum_{b=1}^y \lfloor \frac{\min(x,b^2+b-1)}{b+1} \rfloor\),这可咋办?
为了去掉这个烦人的 \(\min\) ,我们只好分类讨论:对于 \(b^2+b-1<x\),分子取到 \(b^2+b-1\),直接累加即可;否则,分子取到 \(x\),用整除分块做。
C
错因:没有从无解的情形出发推理,对整除、莫反模型不够敏感,没有接触过“和为XX”这类的方案数统计问题。
当 \(x \nmid y\),显然无解,因为每个数都得是 \(x\) 的倍数。
当 \(x \mid y\),考虑到我们更喜欢 \(\gcd=1\) 的形式,因此将 \(y\) 除掉 \(x\),得到新的两条限制:\(\sum a_i = \frac{y}{x}, \gcd\{a_i\} = 1\)。
开始莫反。以下,令 \(S=\frac{y}{x}\):
-
钦定 \(f(k)\) 表示和为 \(S\),\(\gcd\) 恰好为 \(k\) 的方案数。
-
钦定 \(F(k)\) 表示和为 \(S\),\(\gcd\) 为 \(k\) 的倍数的方案数。
倍数形式的正变换显然满足,思考 \(F(k)\) 的求取。
\(\gcd\) 为 \(k\) 的倍数,意味着 \(k\) 需要整除每个 \(a_i\)(这两个条件完全等价)。我们不妨将所有 \(a_i\) 除以 \(k\),这样就消除了这个限制,\(F(k)\) 变成了和为 \(\frac{S}{k}\) 的数列的方案数。
这里介绍“和为XX”这类的方案数统计问题的一般方法:运用插板法,假设有 \(S\) 个 \(1\),每个空插板,可以选择插或不插,则方案数即为 \(2^{S-1}\)。
于是,这里的 \(F(k)\) 就是 \(2^{\frac{S}{k}-1}\)。套入逆变换求出 \(f(1)\) 即为答案。
D
错因:这类格点计数问题做少了。
这种计数问题有个一般结论:设一条线距离最远的两个格点的横坐标距离为 \(i\),纵坐标距离为 \(j\),则这条线段上的格点数目为 \(\gcd(i,j)+1\)。
证明:从向量的角度出发,由线段的一端到另一端的有向线段可表示为 \((i,j)\),令 \(d=\gcd(i,j)\),则这个向量空间的最小基底就是 \((\frac{i}{d},\frac{j}{d})\),于是 \((i,j)\) 就可以被划分为 \(d\) 段,格点数自然就是 \(d+1\)(加上起点)。
然后这个题的话就是先考虑行、列的贡献,再考虑斜率为正的线段的贡献(斜率为负的乘以 \(2\) 即可),可得到式子:
斜率为正的线段是这么考虑的:先枚举行列差,行 \(n-i\) 种选择,列 \(m-j\) 中选择(可以理解为在 \(1 \sim n\) 中选一个长度为 \(i\) 的子串),再乘上中间的格点数目(选一个)。
然后把 \(\gcd(i,j)-1\) 那里用分配律拆开,分别考虑减数和被减数即可,这是很套路的部分,就不展开叙述了。
总结
交换求和顺序:
-
最里面有 \(\varphi,\mu\) 之类的,先直接提到最外边,从 \(1 \to n\) 加和。
-
能提出来的尽量往外提。
-
交换后注意系数。(关注你到底要求什么)
-
枚举倍数。
重要的等式:
-
\(\sum_{i=1}^n \sum_{j=1}^n ij = \sum_{i=1}^n i \sum_{j=1}^n j\)
-
\(\prod_{i=1}^n \prod_{j=1}^n ij = (n!)^{2n}\)
重要的技巧:
-
\(k \mid \gcd(i,j)\) 等价于 \(k \mid i 且 k \mid j\)。
-
\(\gcd(i,j) = k\) 的充分不必要条件是 \(k \mid i 且 k \mid j\),主要用于莫反。
-
学会展开求和式,活用 \(\operatorname{sum}(i) = \frac{i \times (i+1)}{2}\)。
浙公网安备 33010602011771号