1 min read 215 words Updated Apr 25, 2026 Created May 03, 2026

本次模拟介于 S 组与 J 组之间。难度有所超标,我在此向各位道歉。

T1:

  1. 做法一:利用 $x^n + y^n = (x + y)(x^{n - 1} + y^{n - 1}) - xy(x^{n - 2} + y^{n - 2})$,发现这很像 $f_n = A f_{n - 1} + B f_{n - 2}$ 的形式,类似矩阵快速幂加速斐波那契数列递推即可。
  2. 做法二:记忆化搜索,利用:

    $$begin{aligned} ^{2n} + y^{2n} = (x^n + y^n)^2 - 2(xy)^n \\ ^{2n + 1} + y^{2n + 1} = (x^n + y^n) (x^{n + 1} + y^{n + 1}) - (x + y)(xy)^n end{aligned} $$

    $
    顺带用 map 维护即可。

T2:

因为我们需要求的是 $\max m$ 使得 $a \equiv b \pmod m$,这等价于 $a - b \equiv 0 \pmod m$

那么问题转化为,找到最大的 $m$ 使得 $m | a_l - a_{l + 1}$$m | a_{l + 1} - a_{l + 2}$$\ldots$$d | a_{r - 1} - a_r$

发现这就是在差分数组上求区间 gcd 即可。

暴力做可以得 50 分,利用线段树维护即可 100 分(略有超纲)

T3:

注意到如果对于每一个数都操作一次,那么相当于整体减一。

所以如果 $x$ 可以达成相等,那么对于 $y \le x$ 的所有 $y$ 也可以达成相等。

考虑二分答案,然后检查。

暴力扫 $O(\log V)$ 次,对于每个数,如果 $\gt mid$,那么操作它直到不大于 $mid$ 为止。

这样一定能判断出有无解,因为在第一次扫完之后,只会有一个数大于 $mid$

之后的每一轮操作,我们都相当于只是在操作该数。在每一个数上操作,其偏离 $mid$ 的值大概每次减半,那么至多 $O(\log V)$ 次,即可完全复原。

如果在操作 $O(\log V)$ 次后,仍然无法复原,说明该 $mid$ 无解。

总复杂度 $O(n \log n \log V)$

T4:

  1. 暴力模拟,$O(n d^d(n^k))$
  2. 考虑能不能求 $f(n, k)$ 的封闭形式:考虑 $f(n, k)$ 实际上是 $d * \rm{1}^k$$d$ 表示因数函数,这里卷积指迪利克雷卷积,那么自然 $f(n, k)$ 是一个积性函数,于是考虑 $f(p^c, k)$,显然答案为 $\binom {c + k} k$,于是分解因式然后卷积,可以 $O(n \times \sigma(n) \times d)$
  3. 利用类似线性筛的方法可以做到 $O(nd)$
  4. 递推时优化一下组合数的转移,可以做到 $O(n)$
  5. 大大超纲,利用 Min25 筛,可以做到 $O(n^{\frac 3 4})$