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 的精髓。

转移分三类,左右都不留空位,留一个空位,留两个空位。具体地

\[f_{i-1,j,k}\xrightarrow{\times j} f_{i,j-1,k}\\ f_{i-1,j,k}\xrightarrow{\times 2j} f_{i,j,k+d_i}\\ f_{i-1,j,k}\xrightarrow{\times j} f_{i,j+1,k+2d_i} \]

复杂度大概是 \(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,先不写了

posted @ 2022-01-09 14:51  iMya_nlgau  阅读(42)  评论(0)    收藏  举报