Arcaea 7.0

CF1927G, *2300

dp 练手题。

一开始不知道为什么去想了一个区间 dp 状物。

实际上这个是可以线性 dp 求解的,我们记 \(f_i\) 为填满 \(1 \sim i\) 的最小次数。

发现转移为以下几种:

  1. \(i\) 往前覆盖。
  2. \(j\) 往后覆盖。
  3. \(j\) 往后覆盖的区间内有一个数 \(k\),往后覆盖。

直接做就是 \(O(n ^ 3)\) 的。

CF383E, *2700

转化补集一个高维前缀和直接带走了,为什么这是 *2700。

CF1736E, *2600

大概方向想对了,状态和实现差一点细节。

\(n\) 很小,考虑 dp。

有一个暴力的状态:\(f_{i, j, k}\) 表示当前在第 \(i\) 轮,当前序列的数为 \(a_j\),保留了 \(k\) 次交换操作。

转移分两类:

  1. \(f_{i, j, k} \gets f_{i - 1, j, k} + a_j\),当前数往后覆盖。
  2. \(f_{i, j, k} \gets f_{i - 1, p, k - 1 + (i - j)} + a_j\),后面抓一个数 \(a_j (j > p)\),用掉了 \(i - j\) 次操作。

然后你发现这个转移是 \(O(n^4)\),发现 \(p\) 那维的转移可以套一个前缀 \(\max\),然后就是 \(O(n^3)\) 的了。

典。

P11842

建出图是一个基环树森林。

发现一般的树上可以直接通过简单的转移得到。

环上的断环为链也是类似的。

P14598

贪心是容易的,然后你发现这个贪心上个线段树直接就做完了。

P14779

有意思。

发现必然存在一度点,因此可以不断删当前一度点完成匹配。

我们在重新建图时有一个限制,这时我们将一对点所有出边互换可以巧妙转化这个问题。

然后发现这个东西实际上变成了一个 DAG,直接 dp 即可。

P8352

好题。

经典的 \(dp\) 状态和子树的答案有管,考虑 dp 套 dp,将子树的答案作为状态。

然后这个东西的转移大概是一个这样的形式:

\[f_{u, p1 + max(q1, q2), p2 + q1} = \sum{f_{u, p1, p2} \times f_{v, q1, q2}} \]

你发现这个状态数实在是有点大,然后你发现一个性质:

\[\forall dp_{i, p, q}, 0 \le q - p \le k \]

然后后面这个东西有一维由 \(nk\) 被压成 \(k\) 了,然后现在直接转移复杂度就是 \(O(n^2k^3)\) 的,可以通过。

posted @ 2026-09-04 22:11  FailureG_QwQ  阅读(12)  评论(0)    收藏  举报