大一蒟蒻的DP暴力总结
无他,唯手熟尔。
Part 1
普通动规
1.核心:
f(n,m)=max{f(n-1,m), f(n-1,m-w[n])+P(n,m)}
//也是01背包算法的基础公式
2.思路:
“ 想象你现在面对着最后一个状态,你需要前一个状态向你提供什么数据才能把它做出来,而前一个状态的数据能否再通过前一个数据以相同的方法求出来。”
请认认真真读一遍,体会这句话的意思。
这点想出来了,就结束了
3.条件:(相信你们已经看过很多遍了,可以跳过)
(1) 最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。
==(2) 无后效性:==即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。
(3)有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。(该性质并不是动态规划适用的必要条件,但是如果没有这条性质,动态规划算法同其他算法相比就不具备优势)
*第一第三条呢,基本不用看,是不是DP基本可以靠感觉。多说一下,这里(2)其实是有解的,可以用记忆化搜索加回溯做出来。*