POJ 1742 Coins 多重背包入门题
2013-08-29 10:33
447 查看
题意:给你钱的价值和数量,求能在价值m以内能够拼出多少种钱数。
View Code
View Code
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; bool dp[120003]; int w[101],c[101]; int main() { int n, m, i, j; while(~scanf("%d%d",&n,&m)) { if(!m&&!n)break; for(i=1;i<=n;i++) scanf("%d",&w[i]); for(i=1;i<=n;i++) scanf("%d",&c[i]); memset(dp,0,sizeof(dp)); dp[0]=1; //多重背包 for(i=1;i<=n;i++) { if(c[i]*w[i]>=m) { for(j=w[i];j<=m;j++) if(dp[j-w[i]])dp[j]=1; } else { int k=1; while(k<c[i]) { for(j=m;j>=w[i]*k;j--) if(dp[j-w[i]*k])dp[j]=1; c[i] -= k; k*=2; } for(j=m;j>=w[i]*c[i];j--) if(dp[j-w[i]*c[i]])dp[j]=1; } } int num=0; for(i=1;i<=m;i++) if(dp[i])num++; printf("%d\n",num); } return 0; }
相关文章推荐
- POJ 1742 Coins 多重背包入门题
- POJ 1742 Coins(多重背包, 单调队列)
- poj 1742 多重背包入门
- poj 1742 Coins (多重背包可行性问题)
- poj 1742 Coins(多重背包)
- POJ 1742 Coins (多重背包)
- POJ 1742Coins 多重背包转完全背包
- POJ-1742:Coins(多重背包二进制求法)
- POJ 1742 Coins 多重背包
- Poj 1742 Coins【多重背包】
- poj 1742 Coins(多重背包)
- POJ 1742 && HDU 2844 Coins(多重背包问题)
- poj 1742 coins_多重背包
- poj-1742 COINS(多重背包问题)
- POJ 1742 Coins 混合三种背包问题
- POJ1742 Coins 【多重背包】
- poj1742 Coins(多重背包+单调队列优化)
- POJ 1742 Coins 多重背包单调队列优化
- HDU2844&&POJ1742-Coins(多重背包)
- POJ 1742 Coins (背包)