算法树之动态规划
九羽-
日有所进,月有所变,终有所成。
展开
-
( 动态规划专题 )【 分组背包 】
( 动态规划专题 )【 分组背包 】问题:n件物品,有重量w和价值p,将这些物品划分成k组,每一组里只能选择至多1件物品,背包容量为sum,求价值最大能拿多少分组背包就是01背包的变式,只不过加了个限制,每个组最多只能拿一个,这就只需要把一个组抽象成一个物品作为第一个for循环,在第二层for循环固定住当前背包容量v时,再枚举这个组的物品看看那个最优更新dp[v]。分组背包: for i=1 to k { for v=sum to 0 { .原创 2020-10-26 19:49:26 · 238 阅读 · 0 评论 -
C - Crusher’s Code( 概率dp )
C - Crusher’s Code( 概率dp )题目链接:https://codeforces.com/gym/101655/attachments/download/6474/20132014-acmicpc-pacific-northwest-regional-contest-en.pdf题意(翻译润色了一下):^▽^神秘的三角洲一直流传着一个关于排序的问题。你在旅途中遇到了Monly和Carlos,他们都对自己解决这个问题的方案很有信心。Monty的代码是这样的: ..翻译 2020-10-10 20:25:54 · 223 阅读 · 0 评论 -
( 动态规划专题 )【 概率dp 】
( 动态规划专题 )【 概率dp 】一般来说,概率DP找到正确的状态定义后,转移是比较容易想到的。但状态一定是“可数”的,把有范围的整数作为数组下标。事实上,将问题直接作为状态是最好的。如问“n人做XX事的期望次数”,则设计状态为f[i]表示i个人做完事的期望。转移一般是递推,即从上一个状态转移得(填表)或转移向下一个状态(刷表)。有时期望DP需以最终状态为初始状态转移,即逆推。如f[i]表示期望还要走f[i]步到达终点。这种状态的转移是刷表法,形如 ,其中p[] 表示...翻译 2020-10-09 19:52:37 · 211 阅读 · 0 评论 -
( 动态规划专题 )【 区间dp 】
( 动态规划专题 )【 区间dp 】推荐:https://blog.csdn.net/qq_40772692/article/details/80183248一.什么是区间dp?顾名思义:区间dp就是在区间上进行动态规划,求解一段区间上的最优解。主要是通过合并小区间的 最优解进而得出整个大区间上最优解的dp算法。二.核心思路既然让我求解在一个区间上的最优解,那么我把这个区间分割成一个个小区间,求解每个小区间的最优解,再合并小区间得到大区间即可。所以在代码实现上,我可以枚举区间长度l..转载 2020-08-07 11:28:38 · 178 阅读 · 0 评论 -
( 动态规划专题 )【 最长公共子序列(LCS) 】
( 动态规划专题 )【 最长公共子序列(LCS) 】原文:https://blog.csdn.net/weixin_40673608/article/details/84262695相关概念子序列形式化定义:给定一个序列X=<x1,x2,x3,x4...,xm>,另一个序列Z=<z1,z2,z3,z4...,zk>,若存在一个严格递增的X的下标序列<i1,i2,i3,...,ik>对所有的1,2,3,...,k,都满足x(ik)=zk,则称Z是X的子序列.转载 2020-07-24 19:07:25 · 318 阅读 · 0 评论 -
( 动态规划专题 )【 补充--记录路径的01背包 】
( 动态规划专题 )【 补充--记录路径的01背包 】在01背包问题中,求出最优解并记录背包内物品,动态规划的方法求其问题,最核心的公式为f[i][j]=max{f[i-1][j],f[i-1][j-weight[i]]+value[i]},在考虑当前第i个物品是否放入的时候就是比较前面的i-1个物品放在容量为j的背包中时背包中总价值与前面的i-1个物品放在容量为j-weight[i...原创 2020-02-11 11:19:45 · 789 阅读 · 0 评论 -
( 动态规划专题 )【 树形dp 】
( 动态规划专题 )【 树形dp 】树形DP是一种DP的思想,只不过普通dp是在数组上进行的,而树形dp是在树上进行的。直接看例题:P2015 二叉苹果树题目链接:https://www.luogu.com.cn/problem/P2015题目描述有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点)这棵树共有N个结点(叶子点或者树枝分叉点),编号为...原创 2020-02-02 15:42:03 · 135 阅读 · 0 评论 -
( 动态规划专题 )【 数位dp 】
( 动态规划专题 )【 数位dp 】基础篇数位dp是一种计数用的dp,一般就是要统计一个区间[le,ri]内满足一些条件数的个数。所谓数位dp,字面意思就是在数位上进行dp咯。数位还算是比较好听的名字,数位的含义:一个数有个位、十位、百位、千位......数的每一位就是数位啦!之所以要引入数位的概念完全就是为了dp。数位dp的实质就是换一种暴力枚举的方式,使得新的枚举方式满足dp的性质...翻译 2020-02-01 13:17:37 · 194 阅读 · 0 评论 -
( 动态规划专题 )【 背包问题 】
( 动态规划专题 )【 背包问题 】01 背包有n 种不同的物品,每个物品有两个属性,weight 体积,value 价值,现在给一个容量为 w 的背包,问最多可带走多少价值的物品。 完全背包如果物品不计件数,就是每个物品不只一件的话。01背包问题与完全背包问题 代码非常相似一个是从后往前遍历,一个是从前往后遍历。01背包问题代码#include <...原创 2019-11-22 21:42:15 · 204 阅读 · 0 评论