2021.12 做题笔记
因为 DP 太差,教练丢给我们一堆联赛难度的 DP 题做,然后完全不会,可能我的 DP 就是普及组水平。。
Luogu P2470 [SCOI2007]压缩
为数不多的自己做出来的紫题
\(f_i\) 表示到 \(i\) 的答案,转移枚举上一个 M 的位置,然后发现还要算一个 \(g_{l,r}\) 表示从 \(l\) 到 \(r\)(\(l\) 左面有一个 M)的串能压缩成多少,\(g\) 可以区间 DP,然后就做完了。
Luogu P1896 [SCOI2005]互不侵犯
入门题
Luogu P4294 [WC2008]游览计划
现学了一下斯坦纳树,就变成模板题了
(可以插头 DP?狗都不写)
Luogu P2081 [NOI2012] 迷失游乐园
给你一棵基环树,随机一点出发走每个点至多经过一次的路径,问期望路径长度。
如果是一棵树,这题就很简单了,只要算出从每个点往上和往下走的期望长度,这个可以两次 DP 算出来(有点像换根)。
基环树的话,还要处理一下环,求出从环上出发,从环上每个点下去的概率,再算期望。
[HDU4899]Hero meet devil
DP 套 DP,用 DP(状压) 去维护另一个 DP(lcs),其实挺暴力的,,
「ZJOI2019」麻将 有空做一下(flag)
Ural 1519 Formula
[SCOI2011]地板
这俩都是挺入门的插头 DP,以前做过(也是唯一做过的),就不写了
Luogu P6021 洪水
动态 DP
插块DP
这种 DP 思路还是非常好的
bzoj 4498 魔法的碰撞
在长 \(L\) 的数轴上放 \(n\) 个魔法师,第 \(i\) 个魔法师有一个属性 \(d_i\),若魔法师 \(i\) 和 \(j\) 相邻,他们的距离不能小于 \(\max(d_i,d_j)\) ,求和法方案数。
\(n,d_i\leq 40\),\(L\leq10^6\)
我们先把魔法师进行一个排列 \(p\),那么他们靠的最近时占的地方就是 \(w=\sum\limits_{i=1}^{n-1}\max(d_{p_i},d_{p_{i+1}})\) ,对答案的贡献是 \(\binom{L-w}{n}\)。
把所有 \(d\) 按从大到小排序,这样对于相邻的两个点,对 \(w\) 的贡献都是先放进去那个产生的。
然后就来了一个牛逼的 DP,\(f_{i,j,k}\) 表示考虑到第 \(i\) 个人,目前留了 \(j\) 个空位,\(w\) 值目前为 \(k\) 的方案数。
这个空位,是指目前相邻的两个数之间之后还会不会放人,这决定了我们要不要把 \(d_i\) 加到 \(k\) 里,这一维就是插块 DP 的精髓。
转移分三类,左右都不留空位,留一个空位,留两个空位。具体地
复杂度大概是 \(O(n^2\sum d)\)。
bzoj 4664 Count
有 \(n\) 本书,第 \(i\) 本书高度 \(h_i\),一个排列 \(p\) 的混乱程度定义为 \(\sum\limits_{i-1}^{n-1}\left| h_{p_{i}}-h_{p_{i+1}}\right|\) ,求混乱程度不超过 \(L\) 的方案数。
\(n\leq 100\),\(L,h_i\leq 1000\)
和上面那道题其实很像的,但好像要更复杂一点。
有一说一,回忆 DP 题挺痛苦的,因为完全不记得了还要重想一遍,12 月其实还做了不少 DP,先不写了

浙公网安备 33010602011771号