【没写完】随便记录下各种推式子题

CF2013E. Prefix GCD

题目大意是给定一个序列 \([a_1, a_2, a_3, \cdots, a_n]\) 你需要重新排列这个序列,使得 \(\gcd (a_1) + \gcd (a_1, a_2) + \gcd (a_1, a_2, a_3) + \cdots, + \gcd (a_1, a_2, a_3, \cdots, a_n)\) 尽可能小。

多组数据,\(n\) 总和不超过 \(10^5\)\(a_i\) 最大值的总和也不超过 \(10^5\)

方便起见,记 \(pre_i\)\(\gcd (a_1, a_2, a_3, \cdots, a_i)\)

显而易见的事情是,\(pre_i\) 一定在最前面的一段单调下降,随后保持同一个值,直至结尾。

证明略。直观的理解就是,如果 \(pre_i\) 还有下降的空间(存在没用过的数能让 \(pre_i\) 下降),\(a_{i + 1}\) 不能够让 \(pre_i\) 下降的话,把能让 \(pre_i\) 下的数跟原来的 \(a_{i + 1}\) 换个位就可以让答案更优。

而这样的下降不可能超过 \(log n\) 次(毕竟每次下降实际上都是除以了某个数)。

并且,对于某个数 \(x\) 而言,它在序列中反复出现实际是没意义的。因为从其第二次出现开始,就再也不可能对 \(\gcd\) 造成影响了。

考虑 dp 做法。令 \(dp[i][j]\) 表示:在 \(pre_i = j\) 的前提下,\(pre_1 + pre_2 + \cdots + pre_i\) 的最小值。

考虑如何转移。

\[dp[i + 1][y] = \min\limits_{\exists i , \ \mathrm{s.t.} \ \gcd (a_i, x) = y} dp[i][x] + y \]

也就是说,从 \(dp[i][x]\) 能够转移到 \(dp[i + 1][y]\),核心是需要有一个 \(a_i\),使得 \(\gcd (a_i, x) = y\)

首先由 \(\gcd (a_i, x) = y\),我们知道 \(x\) 这里的 \(a_i\) 一定是 \(y\) 的倍数。

同除以 \(y\),可得 \(\gcd \left (\frac{a_i}{y}, \frac{x}{y} \right ) = 1\)

这样上面那个「存在」的条件,就等价于:

\[\sum_{a_i, y \mid a_i} \left [ \gcd \left (\frac{a_i}{y}, \frac{x}{y} \right ) = 1 \right ] \geq 1 \]

根据莫比乌斯反演经典结论,上式等于:

\[\sum_{a_i, y \mid a_i} \sum_{d, d \mid \frac{a_i}{y}, d \mid \frac{x}{y}} \mu (d) \]

其中 \(\mu (x)\) 表示莫比乌斯函数。

交换求和顺序,可得:

\[\sum_{d, d \mid \frac{x}{y}} \mu (d) \sum_{a_i, y \mid a_i, d \mid \frac{a_i}{y}} 1 \]

因为这里 \(x\)\(y\) 都是固定的数字,我们可以直接把 \(d \mid \frac{x}{y}\) 的限制条件提取到第一层枚举 \(d\) 的地方。

然后第二层循环,对 \(a_i\) 有个 \(y \mid a_i, d \mid \frac{a_i}{y}\) 的限制条件,显然后者是更强的,也就是 \(a_i\) 需要是 \(d \cdot y\) 的倍数。

方便起见,我们记 \(cnt[x]\) 表示 \(a_i\) 中有多少个数是 \(x\) 的倍数。

那么 \(\sum_{a_i, d \cdot y \mid a_i} 1\) 其实就是 \(cnt[d \cdot y]\)

总结一下,从 \(dp[i][x]\) 能够转移到 \(dp[i + 1][y]\),需要下式成立:

\[\left ( \sum_{d, d \mid \frac{x}{y}} \mu (d) \cdot cnt[d \cdot y] \right ) \geq 1 \]

\(V\) 表示值域,显然我们有 \(O (V \log^2 V )\) 的方式去预处理所有合法的 \((x, y)\) 对。(其实就是调和级数复杂度再额外带个枚举因子 \(d\)\(log\)

然后进行 dp 即可。

时间复杂度 \(O (V \log^2 V + V \log V \log n)\)

Code: 316691056

posted @ 2025-04-22 22:59  Frost_Ice  阅读(23)  评论(0)    收藏  举报