zoukankan      html  css  js  c++  java
  • poj3260 平衡问题(二维01背包)

    http://www.cnblogs.com/ziyi--caolu/p/3228090.html

    http://blog.csdn.net/lyy289065406/article/details/6648094/

    这道题更加理解了背包问题实质上是状态的转换。

    范围中有负数,先平移到全是正数,因为最后所有砝码都要用上,所以可以先遍历第一个的所有情况,再以此推出第二个。

    上面的思路用穷举是不行的,所以这时就要用DP,而背包正好很适合解决这一类问题,这就是解题的突破口

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <cstdlib>
    #include <cstdio>
    #include <cmath>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <cctype>
    #include <vector>
    #include <iterator>
    #include <set>
    #include <map>
    #include <sstream>
    using namespace std;
    
    #define mem(a,b) memset(a,b,sizeof(a))
    #define pf printf
    #define sf scanf
    #define spf sprintf
    #define pb push_back
    #define debug printf("!
    ")
    #define MAXN 1010
    #define MAX(a,b) a>b?a:b
    #define blank pf("
    ")
    #define LL long long
    #define ALL(x) x.begin(),x.end()
    #define INS(x) inserter(x,x.begin())
    #define pqueue priority_queue
    #define INF 0x3f3f3f3f
    
    int c,g;
    
    int dp[20][15000];
    
    int cc[20],gg[20];
    
    int main()
    {
        int i,j,k;
        while(~sf("%d%d",&c,&g))
        {
            for(i=0;i<c;i++)
            {
                sf("%d",&cc[i]);
            }
            for(i=1;i<=g;i++)
            {
                sf("%d",&gg[i]);
            }
            dp[0][7500] = 1;
            for(i=1;i<=g;i++)
            {
                for(j=15000;j>=0;j--)
                {
                    for(k=0;k<c;k++)
                    {
                        if(dp[i-1][j+cc[k]*gg[i]]>0)
                        {
                            dp[i][j]+= dp[i-1][j+cc[k]*gg[i]];
                            //pf("%d %d
    ",i,j-7500);
                        }
                    }
                }
            }
            pf("%d
    ",dp[g][7500]);
        }
        return 0;
    }
  • 相关阅读:
    alt、title和label
    css3-transform
    word break和word wrap
    聊聊svg
    JS严格模式
    JS提前声明和定义方式
    js跨域
    IE7append新的元素自动补充完整路径
    HTML5摇一摇
    基于jQuery仿uploadify的HTML5图片上传控件jquery.html5uploader
  • 原文地址:https://www.cnblogs.com/qlky/p/5640317.html
Copyright © 2011-2022 走看看