Hdu2191珍惜现在,感恩生活(多重背包,模板)
2018-03-19 16:23
232 查看
http://acm.hdu.edu.cn/showproblem.php?pid=2191
思路分析:典型的多重背包问题,开设一维数组dp[],维数maxn便是最大价值量,之后按照上述思路双重循环便是,dp[maxn]所对应的便是所能买到的最大情况。
dp[k]表示可以使用的价值量(理解为背包,可用体积)的时候,物品的最大价值量,
dp[i]=max{dp[i],dp[k-v[i]]+w[i]},分两种情况,
其实我们可以把多重背包看成01背包,每种物品进行n次的情况。
思路分析:典型的多重背包问题,开设一维数组dp[],维数maxn便是最大价值量,之后按照上述思路双重循环便是,dp[maxn]所对应的便是所能买到的最大情况。
dp[k]表示可以使用的价值量(理解为背包,可用体积)的时候,物品的最大价值量,
dp[i]=max{dp[i],dp[k-v[i]]+w[i]},分两种情况,
其实我们可以把多重背包看成01背包,每种物品进行n次的情况。
#include <iostream> #include <stdio.h> #include <string.h> #include <algorithm> using namespace std; int main() { int T,n,m; int v[105],w[105],num[105],dp[105]; cin>>T; while(T--) { //m代表总共金额,n代表大米的种类 cin>>m>>n; for(int i=0;i<n;i++) //v[i]一袋大米的金额,w[i]一袋的重量,num[i]每种的数目。 cin>>v[i]>>w[i]>>num[i]; memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) for(int j=0;j<num[i];j++) for(int k=m;k>=v[i];k--) dp[k]=max(dp[k],dp[k-v[i]]+w[i]); cout<<dp[m]<<endl; } return 0; }
相关文章推荐
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活--hdu2191(多重背包模板)
- hdu2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活【多重背包模板题】
- 【多重背包】HDU2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活【模板】
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包+二进制优化模板)
- hdu2191 — 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 (多重背包)
- hdu2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(完全背包)
- HDU2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活[多重背包]
- HDU2191_悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(背包/多重背包)
- 多重背包 hdu2191 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活
- HDU - 2191悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包模板题)
- hdu 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包模板题)
- HDU2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包经典)
- 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 hdu2191 多重背包
- hdu 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包模板题)
- hdu2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活【单调队列优化多重背包】
- hdu 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包模板题)
- HDU2191 (多重背包) 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
- 【背包专题】E - 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 hdu2191【多重背包】
- HDU2191:悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包)
- hdu 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包模板题)