• hdu Proud Merchants


    此题是一个背包的题目,刚开始我并没有作任何的排序工作,所以出来的结果总是错的,仔细想想也确实是不对的,因为q[i]会限制dp[i]的值的变化。虽然我知道要按照某个量进行排序,对原数据进行处理,但是实在是想不到到底要处理那个数据。于是看了一下大神的博客,原来是要对q-p进行从小到大的排序。对于原因我也是不太懂。。。

    #include"iostream"
    #include"stdio.h"
    #include"cmath"
    #include"algorithm"
    #include"string.h"
    using namespace std;
    #define mx 5005
    int dp[mx];
    struct node
    {
        int p,q,v,l;
    }thing[mx];
    bool cmp(const node a,const node b )
    {
        if(a.l!=b.l) return a.l<b.l;
    }
    int main()
    {
        int n,m,i,j,k;
        while(scanf("%d%d",&n,&m)==2)
        {
            for(i=1;i<=n;i++)
               {
                    cin>>thing[i].p>>thing[i].q>>thing[i].v;
                    thing[i].l=thing[i].q-thing[i].p;
               }
               sort(thing+1,thing+n+1,cmp);
               memset(dp,0,sizeof(dp));
            for(i=1;i<=n;i++)
            {
                if(thing[i].q>m) continue;
                for(j=m;j>=thing[i].q;j--)
                {
                    if(dp[j]<dp[j-thing[i].p]+thing[i].v)
                        dp[j]=dp[j-thing[i].p]+thing[i].v;
                }
            }
            cout<<dp[m]<<endl;
        }
        return 0;
    }
    View Code
  • 相关阅读:
    struts2类型转换
    struts2拦截器
    计算机系统结构
    struts2标签
    struts2 OGNL表达式
    使用bootstrap
    Struts2-综合项目
    拦截器,课3
    struts2之OGNL
    Struts2框架
  • 原文地址:https://www.cnblogs.com/acm-jing/p/4314517.html
Copyright © 2020-2023  润新知