• hdu 1574 RP问题 01背包的变形


    hdu 1574 RP问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1574

    分析:01背包的变形。

    RP可能为负,所以这里分两种情况处理一下就好。

    初始化要注意。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    #define inf 0x3f3f3f3f
    
    int f[20001],th;
    int a,b,c;
    
    void dp()
    {
    
        f[10000]=0;
        if(a>0)
        {
            for(int i=b+10000;i>=0;i--)
                f[i+a]=max(f[i+a],f[i]+c);
        }
        else if(a<0)
        {
            for(int i=b+10000;i<20001;i++)
                f[i+a]=max(f[i+a],f[i]+c);
        }
    }
    
    int main()
    {
        int t,maxx;
        scanf("%d",&t);
        while(t--)
        {
            maxx=-inf;
            memset(f,-inf,sizeof(f));
            scanf("%d",&th);
            for(int i=1;i<=th;i++)
            {
                scanf("%d%d%d",&a,&b,&c);
                dp();
            }
            for(int i=0;i<20001;i++)
                maxx=max(maxx,f[i]);
            printf("%d
    ",maxx);
        }
        return 0;
    }
    
    //晕死,又因为初始化位置放错了找错误找半天!
    

     疑问:

    初学动态规划,一般是求解是从当前状态由前一个状态得来。一开始我就是这样写状态转移方程的。然而这一个题是当前状态求解下一个状态。

    所以对于两者之间,有点困惑,大神求教!

  • 相关阅读:
    20200301(4)
    网络工程横道图
    20200229追根溯源(3)
    20200229(2)
    追根溯源 (1)
    20200228 down(0)
    20200228
    7-7 古风排版 (20分)
    不写了天梯赛 屁股疼死了
    字符串翻转(面试题2)
  • 原文地址:https://www.cnblogs.com/yang-/p/4732759.html
Copyright © 2020-2023  润新知