H题 完全背包

来源:互联网 发布:js点击空白处隐藏 编辑:程序博客网 时间:2024/04/30 10:07
#include<iostream>using namespace std;#include<cstdio>#include<cstring>#define INF  1000000000int MIN(int a,int b){ if(a>b)return b; else  return a;}int E,F,N,M;int main(){    int min[20000],P[1000],W[1000];    int T,i,j;    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&E,&F);        M=F-E;        min[0]=0;        scanf("%d",&N);        for(i=0;i<N;i++)            scanf("%d%d",&P[i],&W[i]);        for(i=1;i<=M;i++)min[i]=INF;        for(i=0;i<N;i++)        {            for(j=W[i];j<=M;j++)                min[j]=MIN(min[j-W[i]]+P[i],min[j]);        }            if(min[M]<INF)                printf("The minimum amount of money in the piggy-bank is %d.\n",min[M]);            else                printf("This is impossible.\n");    }    return 0;}

原创粉丝点击