zoukankan      html  css  js  c++  java
  • HDU 3466 01背包变形

    给出物品数量N和总钱数M

    对于N个物品。每一个物品有其花费p[i], 特殊值q[i],价值v[i]

    q[i] 表示当手中剩余的钱数大于q[i]时,才干够买这个物品


    首先对N个物品进行 q-p的排序,表示差额最小的为最优。优先考虑放入这个物品

    然后01背包计算


    #include "stdio.h"
    #include "string.h"
    #include "algorithm"
    using namespace std;
    
    int inf=0x3f3f3f3f;
    
    struct node
    {
        int p,q,v;
    }a[510];
    int dp[5010];
    int Max(int a,int b)
    {
        if (a<b) return b;
        else return a;
    }
    
    bool cmp(node a,node b)
    {
        return a.q-a.p<b.q-b.p;
    }
    
    int main()
    {
        int n,m,i,j,ans;
    
        while (scanf("%d%d",&n,&m)!=EOF)
        {
            for (i=1;i<=n;i++)
                scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v);
            memset(dp,0,sizeof(dp));
            dp[0]=0;
            sort(a+1,a+1+n,cmp);
    
            for (i=1;i<=n;i++)
                for (j=m;j>=a[i].q;j--)
                {
                    if (dp[j-a[i].p]+a[i].v>dp[j] )
                    dp[j]=dp[j-a[i].p]+a[i].v;
                }
    
            ans=0;
            for (i=0;i<=m;i++)
                ans=Max(ans,dp[i]);
    
            printf("%d
    ",ans);
        }
    }
    



  • 相关阅读:
    c++MMMMM:oo
    pytorch简单框架
    第95:PCA
    P1:天文数据获取
    深度学习常用函数记录(tensorflow)
    流畅的python(一)序列构成的数组
    tensorflow2.0学习笔记(一)
    BiseNet阅读总结
    DenseASPP论文总结
    论文写作总结
  • 原文地址:https://www.cnblogs.com/clnchanpin/p/6816489.html
Copyright © 2011-2022 走看看