题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1114
完全背包 模板题
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
const int INF = 0x3f3f3f3f;
const int mod = 998244353;
int va[505],we[505],dp[10005];
int main()
{
std::ios::sync_with_stdio(false);
int t,n,i,j;
cin>>t;
while(t--)
{
memset(dp,INF,sizeof(dp));
int e,f,tolw;
cin>>e>>f;
tolw=f-e;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>va[i]>>we[i];
}
dp[0]=0;
for(i=1;i<=n;i++)
{
for(j=we[i];j<=tolw;j++)
{
dp[j]=min(dp[j],dp[j-we[i]]+va[i]);
}
}
if(dp[tolw]<INF)
{
cout<<"The minimum amount of money in the piggy-bank is ";
cout<<dp[tolw]<<"."<<endl;
}
else
cout<<"This is impossible."<<endl;
}
return 0;
}