2019年3月31日-4月3日训练总结

最近的学习目标还是dp,专业课在学的对象也已经都弄懂了,相比dp,简直就是在放松娱乐。。。

dp的核心感觉就是状态转移方程了,虽然老师给的第一套题是全做完了,但是下一套今天是不打算动的,想和老师说的一样,去看看题,打算静悟会。主要是感觉仍是做题不顺,磕磕绊绊的,完全就是莫名其妙的ac,看自己之前做过去的题第二遍都不一定能做出来,思路也不清晰,就是按照之前的模板,套着套着就过了,很奇怪,感觉不是自己想要的感觉。

虽然菜,但是总结还是得做的,也参考了大佬的文章,总结一下吧,毕竟dp的模板辣么的重要。今天也不去刷题了,安安静静的整理个总结,归纳个模板,看看题,一血还是想的,但是巩固对现在的我而言更重要一些。大部分二维背包都能简化,就不做整理了,直接上最优解。

学的比较有限,暂时只整理背包问题的了,剩下的只能等着再补了。

01背包(给定重量,价值,背包空间,求背包最大价值)

for(int i=0;i<n;i++){
    for(int j=W;j>=w[i];j--){//完全背包相反
        dp[j]=max(dp[j],dp[j-w[i]]+v[i])
    }
}

完全背包(区别01,每件物品可以无限次使用)

for(int i=0;i<n;i++){
    for(int j=w[i];j<=W;j++){//容积w的限制下,物品i的多次使用,而01背包的逆向处理就无法实现这个无限次利用
        dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
    }
}

多组背包(物品给定件数,01形式)

for(int i=0;i<n;i++){
    int num=n[i];
    for(int k=0;k<=num[i];k++){
        for(int j=W;j>=w[i];j--){
            dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
        }
    }
}

多组背包的二进制优化法还不是很明白,暂且不做整理了,等做几道相关的额题,透彻了再补上。

明天也要加油鸭!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值