近几天的做题记录(dp初步)

如你所见,我的dp太烂了,于是先从基础练起

P4017

设 $ dp_i $ 代表 从生产者走到 $ i $ 的方案数

答案为 $ \sum_{out_i == 0}{dp_i} $

拓扑排序即可

P1064

考虑树形dp

设 $ dp_{i,j,k} $ 代表在 $ i $ 为根的子树中,$ j $ 代表 $ i $ 选不选,花费为 $ k $ 的最大答案

暴力转移发现很容易T,怎么办呢?

发现每个 $ {i,j=1} $ 的 dp 数组只有每个前缀最大值才有用,并且这个东西的数量很少

那么记录前缀最大值,依次转移即可

注意枚举顺序,别算重了

P1725

线段树/单调队列 无脑做

细节很烦人,注意一下直接从 $ 0 $ 跳过来的情况

P4933

设 $ dp_{i,j} $ 代表以 $ i $ 为结尾,公差为 $ j $ 的方案数

转移不要枚举 $ j $ ,枚举 $ i $ 和 $ k < i $ ,令 $ j = a_i - a_j $ 即可

注意到 $ j $ 可能为负数,处理一下

P3147

设 $ dp_{l,r} $ 代表 $ [l,r] $ 能合成的最大数字

但是 $ n \le 2^{18} $ ,开不下。

注意到 $ ans \le maxv + log2(n) = 58 $

于是设 $ dp_{i,j} $ 代表左端点为 $ i $ ,能合并出 $ j $ 的右端点位置

类似倍增的,先枚举 $ j $ 后枚举 $ i $

转移式为 $ dp_{i,j} = dp_{dp_{i,j-1},j-1} $

P4290

这个真没啥好说的

暴力枚举区间dp即可

可能实现上多想想


接下来我们要做的是dp、图论专项训练

当然这个东西暑假前肯定训不完

7月前肯定全训dp了

7月可能做一些连通性、最短路的题

暑假期间进行数据结构提升和数学专项训练

后面忘了

posted @ 2025-05-27 22:35  Minecraft_lb  阅读(26)  评论(0)    收藏  举报