动态规划经典问题

只是谈谈看题感悟而已,并没有写题,则跟不用说刷题了。

在看了算法竞赛入门经典,也就是刘汝佳写的那本(一)中动态规划专题,理会甚多。

动态规划问题,一般可以看为DAG问题的,有许多类动态规划原来存储的是bool 的true或false只需改一改题意就变成了,什么保证什么什么情况下,什么最大,什么最小的问题,那就只需将bool改为int就可以了

有一类点集配对问题就是说有n个点,两两配对,使得到的权值总和最大或者最小,一类的问题,数据范围是20的,这样有一个小技,因为最终所有点都是需要配对的,所以第一次枚举的时候只需枚举一个点的情况就可以了,如果用一个一维循环来枚举第一个点的匹配点,已经包涵在任意一个点的匹配中,因此是重复的,可以优化一个n。

几个小点,LCS中的滚动数组空间优化,最大连续和的O(n)算法,TSP问题是十分经典的一类问题,一般dp也就是和暴力没什么区别,时间复杂度也需要2^n甚至更高,这里启发式搜索就比较厉害了,10^6的数据只需要跑1h就可以跑出了,这个估计函数的选举非常重要,要保证正确率要高。

矩阵乘法的(MCM)问题一种简单的区间类DP,O(n^3),还有一类(OBST)问题,最优排序二叉树问题,题目是给你一颗排序二叉树,.........。题目不是关键,也是枚举根节点,然后求一次树上DP就可以了

这里本来的时间复杂度是O(n^3),有什么优化的方法吗?答案是有的,可以用四边形优化来解决,降低一个n,然后就变成了,O(n^2)的复杂度,具体还是去看论文吧,这个讲不太清楚,而且石子合并那里是讲到过的。 

原文地址:https://www.cnblogs.com/fengzhiyuan/p/7228307.html