--经验之谈—
动态规划之——都是这种货色
关于动态规划,老师不会告诉你现在学习的状态转换方程以后用不到,校内动态规划的学习非常基础,它只举出常见的几个例题,类似于要求你背例题。想着让你触类旁通,我明明白白告诉你,没这个可能。(每个程序员都要在刷题中成长)
因为每道题都有属于自己的解,而题目在不停的更新,你学的动态转换方程会随题目而改变,因此真正笔试做题没用,只是告诉面试官,我是科班出来的。我学过动态转换,至于能不能解出题目,那是另外一回事。
下面是动态转换的要点,我可以向你保证,你从网上找动态规划入门的教程,找不到比我写的更好的
都是这种货色
你在网上找的许多题解,有关动态规划的,几乎是看不懂的,你会惊讶于他们怎么想到的,感觉差距这么大,惊为天人。
网上总有那么一些人,他们通过数学规律得出结果,优化后,通过解出的答案去死扣理由,然后把扣出来的理由发到网上,你找的绝大部分题解正是他们扣出来的,二次加工后的产物,他不会告诉你他是靠找规律做出来的,这样显得很low。为的就是让你佩服他,显得自己很厉害很聪明,听明白没有,都是这种货色。
大家一定要小心这种货色。
**********************************************经验总结***********************************************
动态规划的解题核心内容是填动态规划表后对解进行优化(也就是打表找规律),
动态规划的真正难点在于试法,教课书上的那些状态转移方程是别人在打表之后,在表中找出数学规律之后,才写出来的。也就是说,要已知规律和解,才能写出状态转移方程。(搞笑,我已经知道答案还写个毛的方程)
动态规划试法的优化(斜率优化)核心是通过邻接位置,代替枚举行为。
动态规划的套路如下:(一般流程)
尝试——记忆化搜索——优化(打表找规律)——严格表结构dp——精致dp
尝试原则:
原则1:单可变参数最好只是一个值(单可变参数维度最好为低维(0维度))
原则2:可变参数个数少(越少越好找规律)
由于找数学规律不需要理由, 因此不建议在优化的时候找理由(纯装B)
下面将使用上面的方法来做题。