zoukankan      html  css  js  c++  java
  • 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;
    }
    
    //晕死,又因为初始化位置放错了找错误找半天!
    

     疑问:

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

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

  • 相关阅读:
    web前段学习2017.6.15
    web前段学习2017.6.13
    web前端2017.6.10
    web前段2017.6.8
    web前段学习2016.6.6
    宏任务与微任务
    浏览器兼容性问题
    TCP 和 UDP 的区别
    React如何渲染大数据量的列表?
    移动端兼容性问题
  • 原文地址:https://www.cnblogs.com/yang-/p/4732759.html
Copyright © 2011-2022 走看看