zoukankan      html  css  js  c++  java
  • hdu 5410 CRB and His Birthday 01背包和完全背包

    #include<stdio.h>
    #include<string.h>
    #include<vector>
    #include<queue>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
        int _,i,j,m,n,k,a[1024],b[1024],w[1024],dp[2048];
        scanf("%d
    ",&_);
        while(_--)
        {
            scanf("%d%d",&m,&n);
            for(i=0;i<n;i++)
                scanf("%d%d%d",&w[i],&a[i],&b[i]);
            memset(dp,0,sizeof(dp));
            for(i=0;i<n;i++)
            {
                for(j=m;j>=w[i];j--)
                    dp[j]=max(dp[j],dp[j-w[i]]+a[i]+b[i]);
                for(j=w[i];j<=m;j++)
                    dp[j]=max(dp[j],dp[j-w[i]]+a[i]);
            }
            printf("%d
    ",dp[m]);
        }
        return 0;
    }
    

    第一次全部当成01背包做无限超时。

    #include<stdio.h>
    #include<string.h>
    #include<vector>
    #include<queue>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
        int _,i,j,m,n,k,a[1024],b[1024],w[1024],dp[2048];
        scanf("%d
    ",&_);
        while(_--)
        {
            scanf("%d%d",&m,&n);
            for(i=0;i<n;i++)
                scanf("%d%d%d",&w[i],&a[i],&b[i]);
            memset(dp,0,sizeof(dp));
            for(i=0;i<n;i++)
            {
                k=m/w[i];
                while(k!=0)
                {
                    for(j=m;j>k*w[i];j--)
                        dp[j]=max(dp[j],dp[j-k*w[i]]+k*a[i]+b[i]);
                    k--;
                }
            }
            printf("%d
    ",dp[m]);
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    FileAttributes枚举
    File类与FileInfo类
    System.IO.Path类
    会话状态Session
    Application共享数据
    压缩、解压缩流GZipStream
    MemoryStream类
    FileMode枚举
    FileAccess枚举
    MySQL函数
  • 原文地址:https://www.cnblogs.com/xryz/p/4847828.html
Copyright © 2011-2022 走看看