很多年没有再接触ACM方面的算法了,不过这一块其实不时还会提到,在此姑且做个简陋的总结,望诸位不吝赐教^_^。
动态规划
动态规划,核心在于定义”状态”及”状态转移方程”,能保证从任意状态开始都会产生该状态下的最优策略(Principle of Optimality)。
基本技巧
- 定义状态,可以定义”花费刚好为v时的最优值”和”花费至多为v时的最优值”两种;
- 记录最优方案,则开多一个数组记录来源状态,及状态转移选择(如果来源状态不暗含的话);
- 求方案总数,最小值等,则将max改成sum、min;
- 求第K优解,则在状态数组中多开一维(就是每个状态变一个队列),记录前K优解。