HDU 3466 Proud Merchants【01dp】

原创 2016年08月31日 16:27:38

Proud Merchants

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 5497    Accepted Submission(s): 2318


Problem Description
Recently, iSea went to an ancient country. For such a long time, it was the most wealthy and powerful kingdom in the world. As a result, the people in this country are still very proud even if their nation hasn’t been so wealthy any more.
The merchants were the most typical, each of them only sold exactly one item, the price was Pi, but they would refuse to make a trade with you if your money were less than Qi, and iSea evaluated every item a value Vi.
If he had M units of money, what’s the maximum value iSea could get?

 

Input
There are several test cases in the input.

Each test case begin with two integers N, M (1 ≤ N ≤ 500, 1 ≤ M ≤ 5000), indicating the items’ number and the initial money.
Then N lines follow, each line contains three numbers Pi, Qi and Vi (1 ≤ Pi ≤ Qi ≤ 100, 1 ≤ Vi ≤ 1000), their meaning is in the description.

The input terminates by end of file marker.

 

Output
For each test case, output one integer, indicating maximum value iSea could get.

 

Sample Input
2 10 10 15 10 5 10 5 3 10 5 10 5 3 5 6 2 7 3
 

Sample Output
5 11
 

Author
iSea @ WHU
 


#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<climits>
#include<string>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<algorithm>
using namespace std;
#define rep(i,j,k)for(i=j;i<k;i++)
#define per(i,j,k)for(i=j;i>k;i--)
#define MS(x,y)memset(x,y,sizeof(x))
typedef long long LL;
const int INF=0x7ffffff;

const int M=550;
int dp[5005];
int i,j,k,n,m;

struct Node
{
    int p,q,v;
}node[M];

bool cmp(Node a,Node b)
{
    return a.q-a.p<b.q-b.p;
}

int main()
{
    while(~scanf("%d%d",&n,&m))
    {
        rep(i,0,n)
           scanf("%d%d%d",&node[i].p,&node[i].q,&node[i].v);
        sort(node,node+n,cmp);
        MS(dp,0);
        rep(i,0,n)
          for(j=m;j>=node[i].q;j--){
            dp[j]=max(dp[j],dp[j-node[i].p]+node[i].v);
          }
          printf("%d\n",dp[m]);
    }
    return 0;
}


版权声明:噗噗个噗~~~

相关文章推荐

HDU 3466 Proud Merchants(DP:01背包+贪心)

HDU 3466 Proud Merchants(DP:01背包+贪心) 题意:同样有nKind个物品,每个物品有一个weighe[i]和value[i],但是如果你当前余额 分析:首先对于任意两...

Proud Merchants HDU - 3466 (思路题--有排序的01背包)

Recently, iSea went to an ancient country. For such a long time, it was the most wealthy and powerfu...

hdu 3466 Proud Merchants(01 背包)

Proud Merchants Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Sub...

HDU 3466 Proud Merchants(01背包/按limit-price从小到大排序)

题目链接: HDU 3466 Proud Merchants 题意: 有nn个商品和预算mm元。每个商品有个价格priceprice,购买限制limitlimit和价值valval,必须在手中剩...
  • Ramay7
  • Ramay7
  • 2016年03月30日 16:24
  • 245

HDU3466 Proud Merchants (01背包变形)

题意:n件物品,总钱数为m,每件物品都有p(买这件物品的花费),q(当钱数大于q时才可以买这件物品),v(买这件物品获得的价值),求能获得的最大价值      比赛时看到题想到是DP,也想到01背...
  • Gengman
  • Gengman
  • 2017年03月27日 21:52
  • 387

HDU3466 Proud Merchants(贪心+01背包)

题目: Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Ja...

HDU 3466 - Proud Merchants(01背包)

Description Recently, iSea went to an ancient country. For such a long time, it was the most weal...

HDU 3466 Proud Merchants 【01背包】

Proud Merchants Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others...
  • wyjwyl
  • wyjwyl
  • 2015年09月12日 12:40
  • 158

hdu3466——Proud Merchants——————【01背包排序】

/**    解题思路:明显的01背包,但是这个有一个金额限制,所以不仅仅是01背包,因为转移方程应为    for(int k=0;k    for(int i=V;i>=items[k]...

HDU3466:Proud Merchants(01背包)

Problem Description Recently, iSea went to an ancient country. For such a long time, it was the mos...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 3466 Proud Merchants【01dp】
举报原因:
原因补充:

(最多只允许输入30个字)