浅谈动态规划

最近连续好几天都在复习动态规划,也算有点心得体会,再次略记一下

  • 动态规划的思路来源

动态规划是近几年的常考题目,所以如果想要学好动规,就必须要活学活用。
做出动态规划一般分为以下几个步骤:

  1. 定状态:

    状态是一个动规题的灵魂,状态的定义一般有一些常用方式,比如说:当前元素是否被用过?(可以用0/1来表示用过或没用过),最重要的是,要求什么什么就设什么,其他影响它的因素全都放到状态的其他维里。

  2. 初始化:

    动规的初始化很简单,其实就有下面几种常见方式:
    (1) 求最大值,则初始化成负无穷(最小值反之)
    (2) 不合法的状态初始化成正无穷(有时是负无穷,还有时候是0)

  3. 定转移:

    有了状态,转移方程也就好写了,一般就要考虑,当前状态是被那个状态转移来的?当前状态可以转移到那些状态?从而进行转移

  • 动态规划的分类

动态规划分类很多,一般来说,常用的有以下几种:

  1. 线性动规(题型灵活,极为常见)
  2. 树形动规(偏难,较为灵活,可以与背包,记搜等结合)
  3. 区间DP (题目难度不大,不是非常灵活)
  4. 状态压缩DP (数据很小,扩展性不高,极难理解)
  • 动态规划的写法

    对于我个人而言(然鹅我也很蒟蒻),一般是先定一个极为复杂的状态(有时可以达到8维),然后写一遍转移方程,最后进行优化(降维等)

  • 个人对DP的看法

    俗话说的好:

    OI毒瘤千千万,DP树剖各一半       by

    (动态规划确实比树剖难得多)我只有一句话了,DP真是太毒瘤了!!

posted @   Link-Cut-Y  阅读(124)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示