题目1454:Piggy-Bank

来源:互联网 发布:全知之眼音乐 编辑:程序博客网 时间:2024/06/15 18:08
#include <iostream>#include <algorithm>#include <queue>#include <vector>#include <cstring>#include <string>#include <string.h>#include <stdio.h>#include <cmath>#include <map>#include <functional>#include <set>using namespace std;//1454const int INF=0x7FFFFFF;int t,e,f,n,p,w;int v;int dp[10010];struct node{    int p,w;}N[500];int main(){    //freopen("input.txt","r",stdin);    while(cin>>t){        while(t--){            cin>>e>>f>>n;            v=f-e;            for(int i=1;i<=n;i++){                cin>>N[i].p>>N[i].w;            }            for(int i=1;i<=v;i++)                dp[i]=INF;      //因为要求正好装满,所以初始化0件物品背包容量不为0时为无穷            dp[0]=0;            for(int i=1;i<=n;i++){                for(int j=N[i].w;j<=v;j++){                    dp[j]=min(dp[j],dp[j-N[i].w]+N[i].p);                }            }            if(dp[v]!=INF)                cout<<"The minimum amount of money in the piggy-bank is "<<dp[v]<<"."<<endl;            else                cout<<"This is impossible."<<endl;        }    }    return 0;}/**************************************************************    Problem: 1454    User: cust123    Language: C++    Result: Accepted    Time:50 ms    Memory:1560 kb****************************************************************/

0 0