摘要:
Floyd 本质:DP 存储结构:邻接矩阵,若有重边则读入时必须取最小边 算法特点:多源最短路,能一次性求解所有点对间的最短距离 适用对象:小图,允许负权图,无法适用于负环图(负环:环上边权之和为负的环,当任意时刻出现 d p [ i ] [ i ] < 0 dp[i][i]<0 dp[i][i]< 阅读全文
摘要:
Dijkstra 本质:BFS+贪心,对点进行操作 特点:单源最短路,求解一个源点到其他所有点的最短距离 存储结构:链式前向星 适用对象:非负权图(一旦顶点已经确定最短路,其将不再被考查, d i s dis dis将不再改变);不能求最长路 核心思想:不断贪心选取 { d i s } \set{d 阅读全文
摘要:
最长公共子序列(LCS) 给出两序列 v 1 , v 2 v1,v2 v1,v2,求它们最长公共子序列长度(子序列可以不连续) 长度问题 DP( O ( n 2 ) O(n^2) O(n2)) 闫氏DP分析法 注: v 1 , v 2 v1,v2 v1,v2下标从 0 0 0开始, d p dp d 阅读全文
摘要:
完全背包 背包容量为 V V V,有 n n n种物品,每种物品有无限多个,第 i i i种物品体积为 c i c_i ci,价值为 w i w_i wi,怎样装填背包使总价值最大? 实际上,完全背包并不代表每种物品可以真正装填“无限”多个,因为存在背包总体积这一限制因素。 分析:闫氏DP分析法 阅读全文
摘要:
0/1背包 背包问题是DP最经典的类型之一,而0/1背包是最经典最基础的背包问题。 背包体积为 V V V, n n n种物品,每种物品只有1个,第 i i i种物品对应体积为 c i c_i ci,价值为 w i w_i wi,怎样装填能使背包总价值最大? 由于每件物品只有选(0)与不选(1) 阅读全文
摘要:
最长上升子序列(最长递增子序列,LIS) 长度问题 给定长度为 n n n的序列 v v v,求此序列中严格递增(上升)的子序列长度最大值(子序列可由原序列中不连续的元素构成) 朴素DP( O ( n 2 ) O(n^2) O(n2)) 闫氏DP分析法 状态表示: 集合 d p dp dp:所有满足 阅读全文