hdu3466(01背包排序)

来源:互联网 发布:域名的价格是怎么回事 编辑:程序博客网 时间:2024/06/03 22:40

这道题外加了一个条件就是买价格为pi的物体时,剩余的钱不能小于qi,要做一些变动:排序

按照qi-pi的差排序


为什么。。我还在想。。


#include <iostream>

#include <cstring>

#include <cstdio>

#include <vector>

#include <algorithm>

using namespacestd;

struct node

{

    int pi,qi,vi;

}a[505];

bool cmp(node a,node b)

{

    return a.qi-a.pi<b.qi-b.pi;

}

int dp[50005];

int main()

{

    int v,n;

    while(~scanf("%d %d",&n,&v))

    {

        for(int i=0;i<n;i++)

            scanf("%d %d %d",&a[i].pi,&a[i].qi,&a[i].vi);

        memset(dp,0,sizeof(dp));

        sort(a,a+n,cmp);

        for(int i=0;i<n;i++)

        {

            for(int j=v;j>=a[i].qi;j--)

                dp[j]=max(dp[j],dp[j-a[i].pi]+a[i].vi);

        }

        printf("%d\n",dp[v]);

    }

    return0;

}


原创粉丝点击