HDU1114-Piggy-Bank

http://acm.hdu.edu.cn/showproblem.php?pid=1114

#include<cstdio>
#include<cstring>
#include<algorithm>
#define INF 1000000000
using namespace std;
int dp[20000],P[1000],W[1000],E,F,N,M;
int main(void)
{
    int T,i,j;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&E,&F);
        M=F-E;
        scanf("%d",&N);
        for(i=0;i<N;i++)
            scanf("%d%d",&P[i],&W[i]);
        dp[0]=0;
        for(i=1;i<=M;i++)
           dp[i]=INF;
        for(i=0;i<N;i++)
           for(j=W[i];j<=M;j++)
              dp[j]=min(dp[j-W[i]]+P[i],dp[j]);
        if(dp[M]<INF)
           printf("The minimum amount of money in the piggy-bank is %d.\n",dp[M]);
        else
           printf("This is impossible.\n");
    }
    return 0;
}
posted @ 2012-08-31 10:10  Yogurt Shen  阅读(154)  评论(0编辑  收藏  举报