p1802
p1802
题目链接
简单的动态规划;
设f[i][j]为打第i个怪,花j瓶药能获得的最大经验,容易想到f[i][j]由f[i-1][j]+l[i]和f[i-1][j-u[i]]+w[i]转移而来;
代码:
#include<bits/stdc++.h>
using namespace std;
long long n,x,y,u[1005],w[1005],l[1005],f[1005][1005];
void shuru(){//独具一格的输入函数
cin>>n>>x;
for(int i=1;i<=n;i++){
cin>>l[i]>>w[i]>>u[i];
}
return;
}
int main(){
shuru();
f[0][0]=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=x;j++){
if(j-u[i]>=0) y=max(f[i-1][j-u[i]]+w[i],f[i-1][j]+l[i]);//转移方程
else y=f[i-1][j]+l[i];
f[i][j]=max(f[i][j],y);
}
}
cout<<5*f[n][x];
return 0;
}