题面如下:机票
抽象出来就是个01背包裸题,选择当前需要的花费就是药水,然后对应增加价值,我提前预处理失败的可获得经验直接加,然后对应的赢获得的价值就是b-a。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4;
long long v[maxn],w[maxn],dp[maxn];
int main()
{
long long ans=0;
int n,x,i,j,t;
cin>>n>>x;
for(i=0;i<n;i++)
{
int a,b,c;
cin>>a>>b>>c;
ans+=a;
v[i]=b-a;w[i]=c;
}
for(i=0;i<n;i++)
{
for(j=x;j>=w[i];j--)
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
dp[x]+=ans;
cout<<dp[x]*5<<endl;
return 0;
}