DP选讲做题记录 by 付乙淼
DP选讲
P5074 Eat the Trees
最简单的插头DP, 轮廓线和插头可以很轻松存储状态和转移。
P4719 【模板】"动态 DP"&动态树分治
P5024 [NOIP2018 提高组] 保卫王国
动态DP一般就是简单的DP带单点修改, 而且给你放到树上, 这样你就不得不写树剖, 写树剖就需要维护重链, 我们就要写出也就是通过重链这个链构造个矩阵得到答案, 所以我们就需要把所有轻儿子的信息维护起来, 这样其实问题就解决了, 因为我们修改只用修改 \(O(logn)\) 个点的轻儿子信息, 那么就搞完了。
CF1198D Rectangle Painting 1
只要看出来这是个区间DP那么就秒了。
CF1009F Dominant Indices
暴力就是每个位置开个桶, 考虑优化就是把桶换成线段树, 那么就完了, 考虑到答案与深度有关, 我们就可以用长链剖分搞到 \(O(n)\)。
[CERC2017] Kitchen Knobs
很牛的转化, 考虑套路差分后, 我们把每次操作的两个点连边, 那么操作完后就是若干个连通块, 考虑每次操作一定合并两个连通块, 不然一定不优, 然后我们知道操作完后每个连通块的和为0, 而连边不会是和变化, 所以有一个必要条件就是这些连通块的点在开始的时候和就是0, 考虑这其实也是最优解的充分条件, 因为只要开始和为0, 我们一定有构造方案使得仅需 \(siz - 1\) 条边得到这个连通块, 所以问题就变成了分出尽可能多的组, 使得组内的和为0。 简单贪心加DP即可。
CF1153F Serval and Bonus Problem
比较牛的是, 将长度看成1, 然后算概率。最后在乘上 \(l\) 即使答案。
[AGC030D] Inversion Sum
比较拓展思维的是第一步, 求期望不好求我们就计数, 计数不好计我们可以求期望, 求出期望后再称上情况数即可。 考虑期望怎么算就是算每个位置对期望的贡献。