标签:style blog class code c tar
题目链接:
题目:
3 10 1 2 4 2 1 1 2 5 1 4 2 1 0 0
8 4
代码如下:
#include<cstring> #include<cstdio> #include<algorithm> #include<iostream> using namespace std; const int maxn=100000+10; int dp[maxn],v[105],Count[105],m; void zeroonepack(int cost,int value) { for(int i=m;i>=cost;i--) dp[i]=max(dp[i],dp[i-cost]+value); } void completepack(int cost,int value) { for(int i=cost;i<=m;i++) dp[i]=max(dp[i],dp[i-cost]+value); } void multiplepack(int cost,int value,int amount) { int k=1; if(cost*amount>=m) completepack(cost,value); else { while(k<amount) { zeroonepack(k*cost,k*value); amount-=k; k*=2; } zeroonepack(amount*cost,amount*value); } } int main() { int i,j,n,min_count; while(scanf("%d%d",&n,&m)!=EOF) { memset(dp,0,sizeof(dp)); min_count=0; if(n==0&&m==0) return 0; for(i=1;i<=n;i++) scanf("%d",&v[i]); for(i=1;i<=n;i++) scanf("%d",&Count[i]); for(i=1;i<=n;i++) { multiplepack(v[i],v[i],Count[i]); } for(i=1;i<=m;i++) { if(dp[i]==i) min_count++; } printf("%d\n",min_count); } return 0;
标签:style blog class code c tar
原文地址:http://blog.csdn.net/u014303647/article/details/26073613