这题可以看成01背包,为什么呢,听up娓娓道来
我们可以把x把成背包总容量,把朋友看成物品,然后,打败朋友所花的药数是体积,打败获得的经验是价值(因为不打败也有经验,所有我们要换一下参考系)
分析完毕,
上AAACCcode:
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
long long c[N],w[N],f[N],a,b,z,n,x,sum;
void solve() {
cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>a>>b>>z;
sum+=a;//基础(最小价值)配合下一行代码
c[i]=b-a;//价值
w[i]=z;//"体积"
}
for(int i=1;i<=n;i++){//”物品“
for(int j=x;j>=w[i];j--){//”体积“
f[j]=max(f[j],f[j-w[i]]+c[i]);
}
}
cout<<5*(f[x]+sum);
}
int main() {
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
solve();
return 0;
}
over~