随笔分类 -  算法竞赛之动态规划

摘要:导语 状压DP分两大类,一类是集合式,另一类就是棋盘式(即基于连通性)。 其中,集合式状压DP难度相较后者略大,形式复杂多变。而棋盘式状压DP的题目样式都相差不多,解法也都殊途同归,因此将这一类题进行总结,不难归结出一套解题模板。 正文 我们先看以下三个例题。 国王 题目链接 算法概述 状态表示:f 阅读全文
posted @ 2020-07-30 17:02 魑吻丶殇之玖梦 阅读(279) 评论(0) 推荐(1)
摘要:本博客部分内容参考:《算法竞赛进阶指南》 一.区间DP 划重点: 以前所学过的线性DP一般从初始状态开始,沿着阶段的扩张向某个方向递推,直至计算出目标状态。 区间DP也属于线性DP的一种,它以“区间长度”作为DP的“阶段”,使用两个坐标(区间的左、右端点)描述每个维度。在区间DP中,一个状态由若干个 阅读全文
posted @ 2019-07-16 22:03 魑吻丶殇之玖梦 阅读(911) 评论(0) 推荐(0)
摘要:线性DP入门的三道经典题思路这里就不多说了,直接上代码: 数字三角形: 题目链接:戳 LIS问题: 题目链接:戳 LCS问题: 题目链接:戳 LIS问题二分算法 题目链接:戳 这里要讲的是LIS问题的二分+贪心算法,可以将时间复杂度从O(n²)降低为O(nlogn) [算法思路] 用数组b存储序列a 阅读全文
posted @ 2019-07-15 22:03 魑吻丶殇之玖梦 阅读(293) 评论(0) 推荐(0)
摘要:一.0/1背包 题目链接:戳 因为二维数组的动规维护极其简单,这里就不再详述了。 二维数组降低空间开销的方法是使用滚动数组,可以将空间复杂度从O(nm)降低为O(m),此处也不赘述。 直接讲讲一维数组维护的思路: 先看二维数组动规的状态转移方程: F[i,j]=max{F[i-1,j],F[i-1, 阅读全文
posted @ 2019-07-15 21:27 魑吻丶殇之玖梦 阅读(318) 评论(0) 推荐(0)