简单题意
给出手中所拥有的钱,商品能有购买得资格所需要的钱,商品的价格,以及商品对自身的价值,求出最大你能获得的价值
解题思路形成过程
这个和出国选学校的的那个差不多,只不过是把申请资格和实际花费的钱分离了出来。在原先代码改一改就行了。
AC代码
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<fstream>
using namespace std;
struct node{
int p,q,v;
}a[505];
bool cmp(node x,node y){
return x.q-x.p<y.q-y.p;
}
int main(){
ifstream cin("in.txt");
freopen("in.txt","r",stdin);
int n,m;
int dp[5005];
while(cin>>n>>m){
for(int i=0;i<n;i++)cin>>a[i].p>>a[i].q>>a[i].v;
memset(dp,0,sizeof(dp));
sort(a,a+n,cmp);
for(int i=0;i<n;i++){
for(int j=m;j>=a[i].q;j--){
if(dp[j]<dp[j-a[i].p]+a[i].v)
dp[j]=dp[j-a[i].p]+a[i].v;
}
}
printf("%d\n",dp[m]);
}
return 0;
}