有关Rujia Liu 动态规划的·一些总结

1.动态规划是什么?

就是很高级的大暴力啊!,打暴力的时候把值存起来避免重复计算,用来求组合优化问题的

一个玄学东西;

2.如何确定状态及转移方程?

一般思路先把暴力打出来吧,,说不定打打暴力(就像第一次做数字三角,,,暴力出dp)就把状态和转移方程找到了(鄙人觉得做动规前

先打暴力,一是避免翻车,二也能梳理思路以便找dp状态及方程)。但这是对于一些比较普通的dp,

 

遇到难的怎么办?    ,,,,看命吧,但时刻记住状态决定了方程,也决定了程序实现的复杂程度,觉得不太能实现程序时就该换

换思路,改个状态想一哈了。

 

3.蒟蒻的我觉得设计状态可以有如下思路

1)可以先写递归暴力,在其中寻找需要用以保存以减少复杂度的值

2)寻找最优子结构,一道题目能用dp一定具有最优子结构,要保证找出的方程一定每部能求出当前最优(仿佛有些像贪心,其实我觉的

两种方法有互通的地方)

3)拿到一道dp题可以花个几分钟想想能不能放在DAG上做,能的话,往往朝这个方向去想就能得出方程啦!(其实01背包放在DAG上也可以

想得通)

4)状态可以朝这几个方面去想:距离答案还有多远,如uva116,这样即可从答案往前推,以答案为边界条件

当前已取得最优值,如uva11584,状态设计为dp[i]为0~i已取得的最小回文字串数目,即可的dp[i]=min{dp[j]+1| j+1...i为回文串}

如若发现当前状态无法用未更新值求得最优,如uva11400,可以用面的值来求取更新前面的最优值

 

这是蒟蒻的我关于dp方法的总结,(写怎么样无所谓了,反正自己看。。。)

此博文全得益于我亲爱的姐姐(要不是昨天晚上她和我打了一晚游戏,,今天也不会没头脑写题,来写博客。。。)

 

posted @ 2018-02-07 13:06  lmjer  阅读(127)  评论(0)    收藏  举报