摘要: DP思路:先拿5元出来,对价格排序,把最大的先放一边,对剩下的01背包。状态转移方程: dp[j]=max(dp[j],dp[j-a[i]]+a[i]);注意:1、n=1时直接输出m-a[0];2、musing namespace std;#define inf 0x... 阅读全文
posted @ 2018-05-17 20:28 MCQ 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 思路:DP+一维数组(滚动数组)一般的状态转移方程是:dp[i+1][j]=max(dp[i][j],dp[i][j-w[i]]+v[i]此题用二维数组会超内存。如图:状态转移方程:dp[j]=max(dp[j],dp[j-w[i]]+v[i]);#include#i... 阅读全文
posted @ 2018-05-17 17:31 MCQ 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 思路:背包问题,原先想的是把概率当做背包,在这个范围内最多能抢多少钱。但是问题出在概率这里,一是因为概率是浮点数,用作背包必须扩大10^n倍来用。二是最大不被抓概率不是简单的累加。二是p = (1-p1)(1-p2)(1-p3) 其中p为最大不被抓概率,p1,p2,p... 阅读全文
posted @ 2018-05-17 17:18 MCQ 阅读(96) 评论(0) 推荐(0) 编辑
摘要: dp[i][j]:从前i个物品选出总重量不超过j的总价值的最大值。初始化为0。状态转移方程:dp[i+1][j]=max(dp[i][j]+dp[i][j-w[i]]+va[i]);意思就是不选i和选i物品后的最大值。#includeusing namespace s... 阅读全文
posted @ 2018-05-17 09:36 MCQ 阅读(94) 评论(0) 推荐(0) 编辑