Hello 2026 E(不等式放缩,数论+dp)
E. LCM is Legendary Counting Master
回顾题目:给定长度为 \(n\),\(a_{i} \in [0, m]\) 的序列。现在要求填充序列中所有 \(a_{i}=0\) 的项,填充值的范围是 \([1, m]\),使得序列 \(a\) 满足:
- 严格单调递增
- \(\frac{1}{lcm(a_{1},a_{2})} + \frac{1}{lcm(a_{2},a_{3})} + ... + \frac{1}{lcm(a_{n-1},a_{n})} + \frac{1}{lcm(a_{n},a_{1})} \geq 1\)
统计满足要求的序列个数,\(n,m \leq 3000\)。
显然需要对上面的不等式变形。我们都知道:
利用上式代换:
由辗转相除法,不难得到 \(x<y\) 时下式成立:
因此对上式进行不等式放缩:
如果只是这样死板地变换,最终会得到原式 \(\leq 2 (\frac{1}{a_{1}} - \frac{1}{a_{n}})\),无法得到什么有用的结论。试想一下:如果 \(2 (\frac{1}{a_{1}} - \frac{1}{a_{n}})\) 这一项变为 \(1\),那么我们能得到什么结论?
很显然,由不等式放缩的数学证明得到的原式 \(\leq 1\) 与 题目要求的原式 \(\geq 1\) 结合起来,便要求了原式的值只能等于 \(1\)。并且当不等式取等时,所有的放缩条件也必须取等。这样的序列性质显然是更强的,便于我们去对序列计数。
尝试对不等式左侧的最后一项,也就是 \(\frac{gcd(a_{n}, a_{1})}{a_{n}a_{1}}\) 这一项作变换。这里变换成 \(\frac{a_{1}}{a_{n}a_{1}}\)(显然 \(gcd(a_{1},a_{n}) \leq a_{1}\) 也成立):
原不等式放缩改为:
由于 \(a_{1} \geq 1\),因此 \(\frac{1}{a_{1}} \leq 1\),即若上述不等式 \(\leq 1\) 成立。根据上面的分析可知,原式的值只能等于 \(1\),且原序列必须满足:
- \(a_{1} < a_{2} < ... < a_{n}\)(题目要求)
- \(a_{1} = 1\) (不等式只能取等)
- \(\forall i \in [1,n),gcd(a_{i}, a_{i+1}) = a_{i+1} - a_{i}\) (每个不等式放缩都要取等)
不难证明上面的三个条件与原题目约束条件是充要的,因此问题转化成了满足上述三个条件的序列个数。
若 \(x < y\) 且 \(gcd(x, y) = y - x\),则显然 \(y - x\) 是 \(x\) 的约数,也就是:\(d | x, y = x + d\)。因此转移时,只需要枚举 \(x\) 的约数。总复杂度 \(O(nm \ln m)\),具体实现见代码。

浙公网安备 33010602011771号