摘要: 0-1背包问题 dp[i][j]表示前i件物品,体积容量为j的背包所能获得的最大价值 决策是第i个物品选不选; 转移方程 dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]); n为物品数量,m为背包体积 for(int i=1;i<=n;i++) for(in 阅读全文
posted @ 2021-11-23 19:07 matt-11 阅读(89) 评论(0) 推荐(0)
摘要: floyd算法复杂度是o(n^3);n为节点数 思想是dp思想,类似区间dp; f[i][j]表示节点i到节点j的最短路径和; 1.i-j可以由i直接到j 2.i-j可以经过中间节点i-k-j来更新,k相当于节点集,用换元的视角去看k; 1 for(int k=1;k<=n;k++) 2 for(i 阅读全文
posted @ 2021-11-23 15:51 matt-11 阅读(101) 评论(0) 推荐(0)
摘要: 偶然想起单调栈和单调队列的知识点,就想把它记录下来 单调栈和单调队列都是维护一个容器内元素的单调性/滑窗是单调队列的推广这里不细说了,会滑窗一定会单调队列 leetcode 单调栈解决第一个比当前元素大或小的问题; 单调队列主要解决区间最值问题; 239. 滑动窗口最大值 1 class Solut 阅读全文
posted @ 2021-11-23 11:54 matt-11 阅读(31) 评论(0) 推荐(0)