背包九讲
更科瑠夏Q_Q
想和大家一起进步,变得更优秀
展开
-
分组背包问题
9. 分组背包问题 - AcWing题库N=105#f[i][j] 表示从前i件物品中选,体积<=j,属性为价值max#分割点:不选取第i件物品 f[i-1][j]#选取第i件物品k件 f[i][j]=max(f[i][j],f[i-1][j-k*v[i]]+w[i]*k)# f[i][j-v[i]]=max(f[i-1][j-v[i]],f[i-1][j-v[i]-k*v[i]]+w[i]*k)f=[[0 for i in range(N)]for i原创 2022-03-22 10:16:14 · 278 阅读 · 0 评论 -
多重背包问题 II
5. 多重背包问题 II - AcWing题库因为数据量的问题,采用了二进制优化N=2005M=20010#f[i][j] 表示从前i件物品中选,体积<=j,属性为价值max#分割点:不选取第i件物品 f[i-1][j]#选取第i件物品k件 f[i][j]=max(f[i][j],f[i-1][j-k*v[i]]+w[i]*k)# f[i][j-v[i]]=max(f[i-1][j-v[i]],f[i-1][j-v[i]-k*v[i]]+w[i]*k原创 2022-03-22 09:41:59 · 66 阅读 · 0 评论 -
多重背包问题 I
4. 多重背包问题 I - AcWing题库N=105#f[i][j] 表示从前i件物品中选,体积<=j,属性为价值max#分割点:不选取第i件物品 f[i-1][j]#选取第i件物品k件 f[i-1][j-k*v[i]]+w[i]*kf=[[0 for i in range(N)]for j in range(N)]v=[0 for i in range(N)]w=[0 for i in range(N)]s=[0 for i in range(N)]n,v=map(int,i原创 2022-03-22 09:06:21 · 223 阅读 · 0 评论 -
背包九讲 完全背包问题
3. 完全背包问题 - AcWing题库N=1005#f[i][j]:选取i个物品,体积<=j#划分:选第j个k次 f[i-1][j-k*v[i]]+k*w[i]#不选 f[i-1][j]#直接使用k遍历,时间复杂度过不去,优化一下即可过去f=[[0 for i in range(N)]for j in range(N)]a=[0 for i in range(N)]b=[0 for i in range(N)]n,v=map(int,input().split())for i原创 2022-03-21 23:03:22 · 93 阅读 · 0 评论 -
背包九讲 python
01背包问题题目来源:acwing2. 01背包问题 - AcWing题库N=1005#f[i][j]:i件物品,体积为j 属性:总价值max#分割:不要第i件物品,f[i][j]=f[i-1][j]#要第i件物品:f[i-1][j-v(i)]+w[i]f=[[0 for i in range(N)]for i in range(N)]a=[0 for i in range(N)]b=[0 for i in range(N)]n,v=map(int,input().split()原创 2022-03-21 22:41:34 · 942 阅读 · 0 评论