标签: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