普通dp
ZJOI2013 话旧 代码 细节题,烦。
分组背包
CF1354E Graph Coloring 代码 二分图+分组背包。
前缀和优化
APIO2016 划艇 代码
(f_{i,t}) 表示第 (i) 学校第 (t) 区间数只船。隔板法+前缀和转移(滚动数组实现前缀和)。[f_{i,t}=f_{i,t-1}+sum_{j=1}^{i-1}f_{j,t-1}cdot inom{in}{len+in-1}\left(a_ile t& t<b_i,in=sum_{k=j+1}^i[a_kle t& t<b_k],len=d_{t+1}-d_t ight) ]
CF1295F Good Contest 代码
与上题类似,严格选取并且倒着枚举时间即可。
树形dp
NOI2002 贪吃的九头龙 代码 结论+( t dp)。
CF1073F Choosing Two Paths 代码
找到能作为重合点的最长链,以及端点子树的最长链和次长链,两次 ( t Dfs+dp) 搞定。很毒瘤。
JSOI2016 最佳团体 代码
分数规划。 树形背包,要注意循环次序。
FJOI2014 树的重心 题解
做很多次树形 ( t dp),细节较多,涉及树的重心性质。
状压dp
洛谷P4854 MloVtry的咸鱼树 代码
题意难懂而已。把集合状压一下然后 ( t dp) 就好了。
斜率优化
数位dp
SP10606 BALNUM - Balanced Numbers 代码
状压每个数字三种状态:不选,奇数个,偶数个。套个板即可。
洛谷P4317 花神的数论题 代码
数位dp套个板,除了加分变乘法还有要取模。
矩阵快速幂优化
NOI Online 魔法值 代码 倍增+矩幂(可以 ( t bitset) 优化)。
概率dp
POJ2096 Collecting Bugs 代码 推式并 ( t dp)。
洛谷P4316 绿豆蛙的归宿 代码 ( t DAG) 概率 ( t dp)。
NOIp提高 换教室 代码 ( t Floyd)+概率 ( t dp),状态设计是难点。
CF643E Bear and Destroying Subtrees 笔记
套路地精度忽略优化,( t dp) 方程稍微有点难设计。
SCOI2008 奖励关 代码
状压概率dp,很难想。逆枚举,把前一维当作固定,这一位每种情况当作独立。
数据结构优化dp
CF1389F Bicolored Segments 题解
线段树优化dp,也可以贪心加对抗挑选。
dp套dp
TJOI2018 游园会 代码
先预处理dp,差分滚动,dp出正式dp时的转移方法,然后正式dp,统计答案。