近几天的做题记录(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月可能做一些连通性、最短路的题
暑假期间进行数据结构提升和数学专项训练
后面忘了
浙公网安备 33010602011771号