至下而上的树形DP(DP)-蓝桥云笔记

动态规划概念

动态规划简称 DP,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。

简单来说,动态规划其实就是,给定一个问题,我们把它拆成一个个子问题,直到子问题可以直接解决。然后呢,把子问题答案保存起来,以减少重复计算。再根据子问题答案反推,得出原问题解的一种方法。

动态规划最核心的思想,就在于拆分子问题,记住过往,减少重复计算。

动态规划的几个步骤
1.划分子问题
2.状态表示。一般用数组dp[i]表示当前状态
3.状态转移,即当前状态是由前面那些状态转移过来的 例如 dp[i]=dp[i-1],表示当前状态可以由上一个状态
转移过来
4.确定边界,确定初始状态

线性dp

线性DP是动态规划问题中的一类问题,指状态之间有线性关系的动态规划问题。

所谓线性DP,就是递推方程是有一个明显的线性关系的,一维线性和二维线性都有可能

我们在求的时候,有一个明显的求的顺序,即一行一行地来求。这样的有线性顺序的叫做线性DP

例题解析

 背包问题

01背包问题

有一个体积为V的背包,商店有n个物品,每个物品有一个价值v和体积w,每个物品只能被拿一次,问能够装下物品的最大价值。
这里每一种物品只有两种状态即“拿”或“不拿”
设状态dp[i][j]表示到第i个物品为止,拿的物品总体积为j的情况下的最大价值
我们并不关心某个物品有没有被拿,只关心当前体积下的最大价值。
转移方程为: dp[i][j]= max(dp[i-1][j],dp[i-1][j-w]+v);如果不拿物品i,那么最大价值就是dp[i-1][je],如果拿了就是从体积j-v转移过来,体积会变大w,价值增加v。
最后输出dp[n][V];

 

 01背包的优化

 

 树形DP

最大独立集

蓝桥公司一共有 n名员工,编号分别为1~n
他们之间的关系就像一棵以董事长为根的树,父节点就是子节点的直接上司
每个员工有一个快乐指数ai。
现蓝桥董事会决定举办一场蓝桥舞会来让员工们在工作之余享受美好时光,不过对于每个
员工,他们都不愿意与自己的直接上司一起参会。
董事会希望舞会的所有参会员工的快乐指数总和最大,请你求出这个最大值
1<=u,ai<n< 10^5

最小点覆盖

 最小只配集

 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值