CODEVS 1444 “破锣摇滚”乐队
Posted いとう かいじ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CODEVS 1444 “破锣摇滚”乐队相关的知识,希望对你有一定的参考价值。
多个相同的背包,求最大价值
f[i][k][j] 前i首歌用了k张CD,第k张CD的容量为j的最大数量
对于第i首歌,可以把它放到前面的cd中,也可以新开一张cd。
在普通的背包中,f[j]表示最大价值,所以这里可以用f[k][j] 表示前k张cd上的最大数量
f[k][j] = max(f[k][j],f[k-1][t]+1); // 新开一张cd
f[k][j] = max(f[k][j],f[k][j-w[i]]+1); //放到原来的cd上,为什么这样写我也不知道
#include<iostream> #include<cstdio> using namespace std; int f[22][22]; //f[k][j] k张CD,第k张CD的容量为j的最大数量 int w[22]; int n,m,t; int main() { scanf("%d%d%d",&n,&t,&m); for (int i=1;i<=n;i++) scanf("%d",&w[i]); for (int i=1;i<=n;i++) for (int k=m;k>=1;k--) for (int j=t;j>=w[i];j--) f[k][j] = max(f[k][j],max(f[k-1][t],f[k][j-w[i]])+1); printf("%d",f[m][t]); }
以上是关于CODEVS 1444 “破锣摇滚”乐队的主要内容,如果未能解决你的问题,请参考以下文章
洛谷P2736 “破锣摇滚”乐队 Raucous Rockers
洛谷P2736 “破锣摇滚”乐队 Raucous Rockers
洛谷P2736 “破锣摇滚”乐队 Raucous Rockers