Maths 10.8

B. P7325

问题相当于求一个最小的 \(c\) \(s.t.\) \(a \times F_{c - 1} + b \times F_c \equiv 0 (\mod m)\)。

将 \(b\) 去相反数,得到 \(a \times F_{c - 1} \equiv b \times F_{c} (\mod m)\)。

我们同余式除以 \(d = \gcd(a, b, m)\) 得到 \(a' \times F_{c-1} \equiv b' \times F_c (\mod m')\)。

我们再将式子除以 \(d' = \gcd(b', m')\),得到 \(a' \frac{F_{c-1}}{d'} \equiv b'' \times F_c (\mod m'')\)。

把 \(b''\) 移到左边,我们现在可以证明 \(g = \gcd(\frac{F_{c - 1}}{d'}, m'') = 1\)。

因此左边的数也可以求逆。

考虑预处理的状态现在和 \(d, d', c, m\) 有关。

但是你又发现 \(d' = \gcd(F_{c - 1}, m')\),故只需对于所有 \(d | m\) 进行枚举。

时间复杂度大概在 \(O(m \log \log m \log m)\)。

A. P3543

对于这个数列进行查分转化为单点上的操作,然后我们对于每一个点先预先求出最小的修改次数,这个使用 exgcd 方便解决。

我们接下来根据 \(a\) 操作次数的正负性进行调整,我们直接把需要调整的数扔进一个优先队列里去搞就可以了。时间复杂度 \(O(n \log n)\)。

注意 sgn 不要写反,以及可能出现的负余数。

H. P5572

推狮子题。

最终的式子是 \(\sum_{T = 1}^{m} \sum_{d | T}{\mu(d) (\sum_{i = 1}^{\frac{n}{T}}{\phi(id)}) (\sum_{j = 1}^{\frac{m}{T}}{\phi(jd)})}\)。

后面有关于 \(i, d\) 的一部分我们使用 \(n \ln n\) 的预处理求出,为 \(f(i, d) = \sum_{o = 1}^i{\phi(od)}\)。

接下来我们对 \(T\) 根号分治:

  • 对于 \(T \le \sqrt{n}\),直接枚举。

  • 对于 \(T > \sqrt{n}\),我们设计另一个状态 \(g(i, j, s)\) 进行维护,转化成一个前缀和的形式。

总复杂度大概在 \(O(n \sqrt{n} \log n)\)。

D. P4621

posted @ 2026-10-08 19:46  FailureG_QwQ  阅读(3)  评论(0)    收藏  举报