#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int v[501],w[501],d[10001],n;
bool visi[10001];
int solve(int s)
{
if(visi[s])
return d[s];
visi[s] = true;
for(int i=1;i<=n;++i)
if(s>=w[i]) d[s] = min(d[s],v[i]+solve(s-w[i]));
return d[s];
}
int main()
{
int t,e,f;
scanf("%d",&t);
while(t--)
{
for(int i=1;i<=10001;++i)
d[i] = (1<<30);
memset(visi,0,sizeof(visi));
visi[0]=true;d[0]=0;
scanf("%d %d",&e,&f);
int s=f-e,ans;
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d %d",&v[i],&w[i]);
if((ans=solve(s))<(1<<30))
printf("The minimum amount of money in the piggy-bank is %d.\n",ans);
else
printf("This is impossible.\n");
}
return 0;
}
poj1384
最新推荐文章于 2019-07-19 16:01:00 发布