第一章 动态规划基础概念 #
1.1 动态规划核心思想 #
- 最优子结构原理
- 重叠子问题特性
- 状态转移方程构建
- 记忆化与制表法比较
1.2 基本DP模型 #
- 线性DP模型
- 区间DP模型
- 树形DP模型
- 状态压缩DP模型
1.3 DP解题步骤 #
- 问题分析与状态定义
- 状态转移方程推导
- 边界条件确定
- 实现与优化技巧
第二章 经典DP问题解析 #
2.1 背包问题系列 #
- 0-1背包问题详解
- 完全背包问题变种
- 多重背包优化方法
- 分组背包应用场景
- 二维费用背包扩展
2.2 序列DP问题 #
- 最长公共子序列(LCS)
- 最长递增子序列(LIS)
- 编辑距离问题
- 最大子数组和问题
- 序列分割与合并问题
2.3 路径与网格DP #
- 数字三角形问题
- 不同路径计数
- 最小路径和问题
- 带障碍物的路径规划
- 多维网格DP扩展
第三章 高级DP技巧与优化 #
3.1 状态设计技巧 #
- 状态压缩技术
- 滚动数组优化
- 状态维度选择策略
- 状态表示的精简化
3.2 时间复杂度优化 #
- 单调队列优化
- 斜率优化DP
- 四边形不等式优化
- 数据结构辅助优化
3.3 空间复杂度优化 #
- 滚动数组应用
- 状态复用技巧
- 内存优化策略
- 分布式DP思想
第四章 竞赛中的DP应用 #
4.1 图论中的DP #
- 树形DP深度解析
- DAG上的动态规划
- 状态机模型应用
- 图遍历与DP结合
4.2 数位DP专题 #
- 数位DP基本原理
- 数字统计问题
- 数位限制条件处理
- 复杂数位DP实例
4.3 概率与期望DP #
- 概率DP建模方法
- 期望值计算技巧
- 马尔可夫过程应用
- 随机游走问题
第五章 实际竞赛题目精讲 #
5.1 Codeforces经典DP题 #
- 难度分级解析
- 解题思路剖析
- 代码实现细节
- 常见错误分析
5.2 AtCoder DP专题 #
- 典型题目分类
- 日本竞赛风格特点
- 思维转换技巧
- 高效实现方法
5.3 LeetCode DP题目 #
- 企业面试重点
- 实际问题建模
- 多种解法对比
- 性能优化要点
第六章 DP与其他算法结合 #
6.1 DP与搜索算法 #
- 记忆化搜索实现
- 状态空间搜索优化
- 剪枝策略结合
- 双向搜索应用
6.2 DP与数学方法 #
- 组合数学结合
- 生成函数应用
- 矩阵快速幂优化
- 数论知识运用
6.3 DP与贪心策略 #
- 贪心选择性质判断
- 局部最优与全局最优
- 混合算法设计
- 适用范围分析
第七章 实战训练与技巧总结 #
7.1 题目识别与分类 #
- DP特征识别方法
- 问题类型快速判断
- 模型匹配技巧
- 解题切入点选择
7.2 调试与验证 #
- DP代码调试技巧
- 边界情况测试
- 正确性验证方法
- 性能测试与分析
7.3 竞赛策略 #
- 时间分配建议
- 题目选择策略
- 代码模板准备
- 心理调整方法