hdu 1114 完全背包
来源:互联网 发布:滤镜软件下载 编辑:程序博客网 时间:2024/05/18 01:58
传送门http://acm.hdu.edu.cn/showproblem.php?pid=1114//求装满用的最少的钱#include<iostream>#include<cstdio>#define inf 100000000#define maxn 10010using namespace std;int dp[maxn];int main(){ int t; cin>>t; while(t--) { int e,f,n; scanf("%d%d",&e,&f); int u=f-e; scanf("%d",&n); for(int i=0;i<=u;i++) dp[i]=inf;//一定要是u不能是n dp[0]=0; for(int i=1;i<=n;i++) { int w,v; scanf("%d%d",&v,&w); for(int j=w;j<=u;j++)//相当于加入一个后再加入相同的一个一直加到满 跟0 1相反方向 dp[j]=min(dp[j],dp[j-w]+v); } if(dp[u]==inf) cout <<"This is impossible."<<endl; else cout <<"The minimum amount of money in the piggy-bank is "<<dp[u]<<"."<<endl; }}