题目描述
求01背包前k优解的价值和
输入输出格式
输入格式:
第一行三个数K、V、N
接下来每行两个数,表示体积和价值
输出格式:
前k优解的价值和
输入输出样例
输入样例#1:
1 | 2 10 5 |
输出样例#1:
1 | 57 |
说明
对于100%的数据,K≤50,V≤5000,N≤200
题解
对于普通的01背包
f[j]=max(f[j],f[j-w[i]]+c[i])
f[j]是由f[j-w[i]]转移的
我们加一维k优解
则f[j][k]
是由f[j][]和f[j-w[i]][]
转移而来的
由于k很小,只需要暴力判断
但是,这样的背包必须装满,应原题要求
1 | #include<cstdio> |