ZOJ 1712 ACboy needs your help(分组背包)
2013-04-25 18:26
417 查看
对于分组背包,由于存在冲突,只能从一个组选一件,所以完全可以这样思考:
把一组看做是一个物品,选取组中的第i件看成是选取i个该物品。
for k=1..n
for v=V..0
for 所有的i属于组k
f[v]=max{f[v],f[v-c[i]]+w[i]}
把一组看做是一个物品,选取组中的第i件看成是选取i个该物品。
for k=1..n
for v=V..0
for 所有的i属于组k
f[v]=max{f[v],f[v-c[i]]+w[i]}
#include <iostream> #include <cstdio> #include <memory.h> using namespace std; const int maxn=110; int dp[maxn],mat[maxn][maxn],n,m; int main(){ while (scanf("%d%d",&n,&m)){ if(!n&&!m)break; for (int i=1;i<=n;++i){ for (int j=1;j<=m;++j){ scanf("%d",&mat[i][j]); } } memset(dp,0,sizeof(dp)); for (int i=1;i<=n;++i){ for (int j=m;j>0;--j){ for (int k=1;k<=m;++k){ if(j>=k){ dp[j]=max(dp[j],dp[j-k]+mat[i][k]); } } } } printf("%d\n",dp[m]); } return 0; }
相关文章推荐
- hdu 1712 ACboy needs your help(分组背包)
- HDU-1712 ACBoy needs your help (分组背包问题)
- HDU 1712 ACboy needs your help (分组背包入门 1)
- HDU 1712 ACboy needs your help (分组背包 每组至多选一个)
- 分组背包解析[以 Hud 1712 Acboy needs your help 为例]
- hdu 1712 ACboy needs your help (分组背包)
- HDU 1712 ACboy needs your help (分组背包)
- [HDU 1712] ACboy needs your help 分组背包
- hdu 1712 ACboy needs your help(分组背包)
- hdu 1712 ACboy needs your help(分组背包入门题)
- HDU 1712 ACboy needs your help (分组背包)
- hdu 1712 ACboy needs your help (分组背包)
- hdu 1712 ACboy needs your help (分组背包)
- 分组背包基础--1712 ACboy needs your help
- hdu 1712 ACboy needs your help(分组背包)
- HDOJ 1712 ACboy needs your help(分组背包)
- HDU 1712 ACboy needs your help(分组背包模板题)
- hdu1712 ACboy needs your help 我的ACM我的梦,回顾篇 分组背包
- hdu 1712 ACboy needs your help(分组背包)
- hdu 1712 ACboy needs your help (dp 分组背包)