Arcaea 7.0
CF1927G, *2300
dp 练手题。
一开始不知道为什么去想了一个区间 dp 状物。
实际上这个是可以线性 dp 求解的,我们记 \(f_i\) 为填满 \(1 \sim i\) 的最小次数。
发现转移为以下几种:
- \(i\) 往前覆盖。
- \(j\) 往后覆盖。
- \(j\) 往后覆盖的区间内有一个数 \(k\),往后覆盖。
直接做就是 \(O(n ^ 3)\) 的。
CF383E, *2700
转化补集一个高维前缀和直接带走了,为什么这是 *2700。
CF1736E, *2600
大概方向想对了,状态和实现差一点细节。
\(n\) 很小,考虑 dp。
有一个暴力的状态:\(f_{i, j, k}\) 表示当前在第 \(i\) 轮,当前序列的数为 \(a_j\),保留了 \(k\) 次交换操作。
转移分两类:
- \(f_{i, j, k} \gets f_{i - 1, j, k} + a_j\),当前数往后覆盖。
- \(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)\) 的,可以通过。

浙公网安备 33010602011771号