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;    }}

原创粉丝点击