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;
    }
    


  • 相关阅读:
    迭代器
    LinkedList存储一副扑克牌,实现洗牌功能。
    线程
    堆栈、队列
    路由-第7集
    javascript中split字符串分割函数
    this的用法
    什么是AOP面向切面编程
    Servlet与JSP的区别
    堆(heap)、栈(stack)、方法区(method)
  • 原文地址:https://www.cnblogs.com/frankM/p/4399490.html
Copyright © 2011-2022 走看看