zoukankan      html  css  js  c++  java
  • HDU 3466 Proud Merchants

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3466


    本来以为就是一个普通的01背包..

      在购买商品时,条件不单单是拥有的钱大于商品的售价P,还要大于商品的另一个属性Q 。而且Q>=P..

    因为动态规划的后效性,要先按Qi-Pi排序,在按01背包做

    注意,sort 的cmp()函数的返回值为bool型,,因为这个贡献了两次RE..


    #include <iostream>
    #include<cstring>
    #include<algorithm>
    #define MAX_M 5005
    #define MAX_N 505
    using namespace std;
    class iSea
    {
    public:
    
        int Pi;
        int Qi;         //重量
        int Vi;         //价值
    };
    bool cmp (const iSea &a,const iSea &b)
    {
        return (a.Qi-a.Pi)<(b.Qi-b.Pi);
    }
    iSea data[MAX_N];
    int dp [MAX_M];
    int main()
    {
        int n,m;
        int i,j;
        while(cin>>n>>m)            //商品数量,背包容量
        {
            memset(dp,0,sizeof(dp));
            for(i=0; i<n; i++)
                cin>>data[i].Pi>>data[i].Qi>>data[i].Vi;
    
            sort(data,data+n,cmp);
            for(i=0; i<n; i++)
                for(j=m; j>=data[i].Qi; j--)
                        dp[j]=max(dp[j-data[i].Pi]+data[i].Vi,dp[j]);
    
            cout<<dp[m]<<endl;
    
        }
    
        return 0;
    }
    


  • 相关阅读:
    添加coreseek中文分词
    linux 常用处理命令
    rewrite nginx
    判断浏览器类型
    Cookie 读写类
    Php 异常处理 exception
    C++实验:时间和日期类
    数据结构:删除链表元素
    数据结构-循环单链表
    TOJ-5395 大于中值的边界元素
  • 原文地址:https://www.cnblogs.com/frankM/p/4399490.html
Copyright © 2011-2022 走看看