zoukankan      html  css  js  c++  java
  • hdu 3449

    有依赖的背包,转化成01背包来做;

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,m;
    int f[100009];
    int dp[100009];
    
    int main()
    {
        int num,value,pen,pp;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            memset(f,0,sizeof f);
    
            for(int i=1; i<=n; i++)
            {
                scanf("%d%d",&pp,&num);
                memcpy(dp,f,sizeof f);//为了减小时间复杂度;
                while(num--)
                {
                    scanf("%d%d",&pen,&value);
                    for(int j=m-pp; j>=pen; j--)
                    {
                        dp[j]=max(dp[j],dp[j-pen]+value);
                    }
                }
                for(int j=pp; j<=m; j++)
                {
                    f[j]=max(f[j],dp[j-pp]);
                }
            }
            printf("%d
    ",f[m]);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    第一个C#程序
    定位网页元素
    盒子模型
    浮动
    css3美化网页元素
    html css3
    java表单基础
    表单
    html5基础
    java程序题目解析
  • 原文地址:https://www.cnblogs.com/yours1103/p/3652124.html
Copyright © 2011-2022 走看看