#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
struct Node
{
int p,q,v;
}a[550];
int bag[5010];
bool cmp(Node a,Node b)
{
return (a.q-a.p)<(b.q-b.p);
}
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
memset(bag,0,sizeof(bag));
for(int i=0;i<n;i++)
scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v);
sort(a,a+n,cmp);
for(int i=0;i<n;i++)
{
for(int j=m;j>=a[i].q;j--)//等号是临界情况
{
bag[j]=max(bag[j],bag[j-a[i].p]+a[i].v);
}
}
printf("%d\n",bag[m]);
}
return 0;
}
0/1背包_1
最新推荐文章于 2022-03-21 23:06:56 发布
