天天看点

Piggy-Bank

#include <bits/stdc++.h>
using namespace std;
int f[50500],w[50005],v[50500];
int inf =0x3f3f3f3f;
int main()
{
  int t;
  cin>>t;
  while(t--)
  {
    int x,y;
    scanf("%d %d",&x,&y);
    int m=y-x;
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
      scanf("%d %d",&w[i],&v[i]);
    }
    for(int i=1;i<=m;i++) f[i]=inf;
    for(int i=1;i<=n;i++)
    {
      for(int j=v[i];j<=m;j++)
      {
        f[j]=min(f[j],f[j-v[i]]+w[i]);
      }
    }
    if(f[m]!=inf) printf("The minimum amount of money in the piggy-bank is %d.\n",f[m]);
    else printf("This is impossible.\n");
  }
  return 0;
}      

继续阅读