F - Proud Merchants
Posted 2014>
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了F - Proud Merchants相关的知识,希望对你有一定的参考价值。
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?
InputThere 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.
OutputFor 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
#include <iostream> #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; struct node { int v1; int c; int w; }a[100000]; int dp[10000]; bool cmp(node a,node b) { return a.c-a.v1<b.c-b.v1; } int main() { int n,v; while(~scanf("%d%d",&n,&v)) { memset(dp,0,sizeof dp); for(int i=0;i<n;i++) { scanf("%d%d%d",&a[i].v1,&a[i].c,&a[i].w); } sort(a,a+n,cmp); for(int i=0;i<n;i++) for(int j=v;j>=a[i].c;j--) { dp[j]=max(dp[j],dp[j-a[i].v1]+a[i].w); } printf("%d\n",dp[v]); } return 0; }
排序的地方注意一下。。。因为A 需要的时间 A。V1+B.c B的时间是B.V1+A.C;
以上是关于F - Proud Merchants的主要内容,如果未能解决你的问题,请参考以下文章
HDU 3466 Proud Merchants贪心 + 01背包
HDU3466 Proud Merchants[背包DP 条件限制]
I - I HDU - 3466Proud Merchants(贪心+01背包)