kuangbin带你飞系列,基础dp
链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=68966
总共20多道题,就不一一说了
说一下学会的关键的思路
第1点:有的时候某一状态的值的得出,可能会要我们枚举已经计算过的值,一一比较取最值,但如果真的去枚举的话就会超时,这时我们可以把状态的含义设为前i项的最值,计算的时候只需要多比较一项,即和前一项比较一下就可以了。典型题目:A题和S题
第2点:有的时候我们后面的选择可能会依赖于前面的选择是什么,这样就需要把前面的选择记为一个状态,算的时候要枚举一下,多乘以一个n的复杂度,典型题目:C题
第3点:有的时候可能会发现怎么记录状态都没有办法找到转移方程,这时候可以考虑一下把结果作为一个状态,当然,这时候复杂度就与取值范围有关了,如果取值范围太大的话,还有一个办法,对于某一些题,我们可以把值进行离散化一下,就样就转成了n的复杂度了。典型题目:K题
第4点:有的题目可能给出一个n,但物体数量可能不止n,有可能是n*2,n*3,需要这n个物体进行处理一下,把假设出来的物体也算进去。典型题目:C题和M题
第5点:有的题做的时候可能要先按某种规则排序一下。典型题目:J题和S题
第6点:区间dp,区间dp可以正向进行也可以反向进行,正向和反向的一个区别就是,正向是计算i-j这一段时,两旁的还没处理,而反向则是取i-j这一段时,两旁的已经处理了。还有一个要注意的地方就是,将区间分成i-k和k-j这两段时,可能这两段取的顺序也会影响结果,多尝试一下不同的取法。典型题目:O题。顺便延伸一道题目,2014年北京区域赛的Dire Wolf。
——————————————————————————————
大清早起来去参加APP比赛,下午晚上还练车。真是累也累死了,实在刷不动题了,写写总结就好了