大一寒假集训4-动态规划

个人对dp的理解:
记忆化,从小到大,先求出小问题的最优解,然后状态转移逐步求出原问题的解。递推是神,des。
使用dp前提:

  • 能拆分为子问题并能求出状态转移方程,原问题是最优解的同时子问题也都是最优解。
  • 无后效性,也就是一个状态的值只与当前有关,此刻求出多少就是多少。且不会因为达到最优地方式的不同而影响未来状态的值或干涉过去已求出的状态的值。

步骤:

  • 确定问题,确定子问题
  • 定义状态
  • 求状态转移方程
  • 对dp数组边界值进行处理
  • 巧代码

确定的子问题和求状态转移方程的切入点:
对于题目中给出的步骤,明示的,比如上下移动的规则,字符串的增删改。暗示的,背包问题的装或不装,装一个或装多个。

注意的点:
1、空间不够可以考虑滚动数组
2、tle可以先考虑对求状态的值的优化,比如树状数组维护最大值,优化单调栈。

其余收获:
背包问题:https://www.cnblogs.com/Flowyuan-Foreverworld/p/14394523.html
一维树状数组(维护区间和):https://www.cnblogs.com/Flowyuan-Foreverworld/p/14389387.html
单调栈优化和上升子序列:https://www.cnblogs.com/Flowyuan-Foreverworld/p/14394234.html
upper_bound和lower_bound:https://www.cnblogs.com/Flowyuan-Foreverworld/p/14393746.html

posted @ 2021-02-09 23:18  七铭的魔法师  阅读(57)  评论(0编辑  收藏  举报