DP 题目总结

总结一些动态规划的题目

P4805 [CCC 2016] 合并饭团

看见合并类问题,并且 \(n \le 400\),容易想到区间 dp。发现直接暴力区间 dp 时间复杂度是 \(O(n^4)\),无法接受。但我们有一个技巧,对于形如求端点 \(l,r\),使区间满足某些要求的,可以考虑双指针。于是算法优化为 \(O(n^3)\)

CF1073E Segment Sum

观察题目要求结合数据范围,容易想到数位 dp,难点在于如何处理不同数字这一限制,因为一个数字可以出现多次,但只算一种。发现数字种类 \(\le 10\),可以想到使用状态压缩进行处理,问题解决。

P1052 [NOIP 2005 提高组] 过河

做法有很多,可以考虑使用矩阵快速幂加速递推,也可以考虑暴力记录前若干个位置,这样就可以直接跨过连续的空段,问题解决。

CF1606E Arena

对于回合制的情况,可以按回合进行考虑。对于计数类问题,容易想到动态规划。手模一下游戏进程,发现每一回合后会出现两种情况。将变化的量塞入状态中,直接分类讨论,模拟过程即可。

CF1391D 505

这是一个诈骗题,对于 \(n \ge 4\) 的情况,可以通过四个边长为 \(2\) 的小正方体组合成大正方体,哪怕小正方体符合条件,大的也不符合,于是问题就变成了 \(n \le 3\) 的情况。发现每个不同状态对后续决策的影响都很大,于是考虑记录前一个状态,使用状态压缩。最后根据情况暴力 dp 即可。

posted @ 2025-08-24 22:59  Feel_Good  阅读(6)  评论(0)    收藏  举报