acm第八周学习总结

背包问题
01背包问题:
01背包:
有n件物品和一个容量为v的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。
基本思路:
由于每件物品只有一件,所以我们只要考虑这件物品是放还是不放,如果放的话背包容量为v-c[i],其价值也会增加放入物品的价值,若如果选择不放的话,则i-1其价值不变。
状态转移方程:
f[i][v]=max(f[i-1][v],f[i-1][v-c[i]]+w[i])
01背包问题的优化:
01背包可以由二维数组降为一维数组,状态转移方程由f[i][v]=max(f[i-1][v],f[i-1][v-c[i]+w[i]) 转为f[v]=max(f[v],f[v-c[i]]+w[i])f[v]的状态值只与第i-1件能否放入背包有关,所以要从大容量从后往前排列。
01背包和贪心的区别;
贪心的物品是可以分割,而01背包是对一件物品进行考虑
完全背包:
完全背包是01背包中一件变为无限件。对于完全背包降维的循环次序与01背包不同。
区间dp
区间DP主要是把一个大区间拆分成几个小区间,先求小区间的最优值,然后合并起来求大区间的最优值。区间dp就是先确定区间的左端点或右端点然后枚举区间长度进行遍历的到最优解。
学习心得
这周学习了区间dp和背包问题,通过做题我觉得区间dp的题要比线性dp的题难一些,虽然都是求状态转移方程,一个是根据某一个值来求一个是根据某个区间来求,但就是对于一些题很难找到思路,其实也还是自己做题少见的题太少了,我觉得还是多做题才能找到区间dp的套路,对于背包问题的学习,可能是还没深入的原因,背包问题现在我觉得学起来还是比较轻松的,题目也都是很容易理解的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值