题意:空储蓄罐,有一定的质量,存钱,存满,得到的最下价值
思路:属于完全背包问题,和老师讲的基本一样。
感想:没什么感想,一开始不会,听完完全背包问题,感觉就简单了。
#include <stdio.h>
#include<iostream>#include<cstdio>
#include<string.h>
#include<algorithm>
using namespace std;
int v[10005];
int w[10005];
int dp[10005];
int main()
{
int n,i,j,k;
//freopen("r.txt","r",stdin);
int T,V,V1,V2;
cin>>T;
while(T--)
{
scanf("%d%d",&V1,&V2);
V=V2-V1;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&v[i],&w[i]);
}
for(i=0;i<=V;i++)
dp[i]=666666;
dp[0]=0;
for(i=0;i<n;i++)
{
for(j=w[i];j<=V;j++)
{
dp[j]=min(dp[j],dp[j-w[i]]+v[i]);
}
}
if(dp[V]==666666) cout<<"This is impossible."<<endl;
else
cout<<"The minimum amount of money in the piggy-bank is "<<dp[V]<<"."<<endl;
}
}