HDU 1114

来源:互联网 发布:java和net就业前景 编辑:程序博客网 时间:2024/06/05 07:21
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=100000;int t,e,g,n;int p[505],w[505];int f[maxn];int main(){    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&e,&g);        int W=g-e;        scanf("%d",&n);        for(int i=0;i<n;i++)        {            scanf("%d%d",&p[i],&w[i]);        }        for(int i=0;i<=W;i++)            f[i]=1000000;        f[0]=0;         for(int i=0;i<n;i++)         {             for(int v=w[i];v<=W;v++)             {                 f[v]=min(f[v],f[v-w[i]]+p[i]);             }         }         if(f[W]==1000000)            printf("This is impossible.\n");         else         printf("The minimum amount of money in the piggy-bank is %d.\n",f[W]);    }    return 0;}
这个题目还是可以的,,毕竟是背包问题啊,一个基础的DP啊,我通过这个还是学到了很多的,开始看了背包九讲,特别是在讲背包这个问题解决代码的优化的时候,还是非常厉害的啊
那个对于空间的优化,真的是很流弊的啊,可能有时候回碰到题目 就是来卡那个内存的吧。(新手小白的内心揣测),然后还是学到了很多的了,需要继续把背包九讲慢慢的磨完啊。


0 0