二维背包(模板)
include<bits/stdc++.h>
using namespace std;
namespace{
template<typename t="">
inline void read(T &s){
T f=1;s=0;char ch=getchar();
for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1;
for(;isdigit(ch);ch=getchar()) s=(s<<1)+(s<<3)+(ch^48);
s*=f;
}
}
#define ll long long
int m,wei,n;
int v[55],wi[55],w[55];
int f[405][405];
int main(){
read(m);read(wei);read(n);
for(int i=1;i<=n;++i){
read(v[i]);read(wi[i]);read(w[i]);
}</typename>
for(int i=1;i<=n;++i){ for(int j=m;j>=v[i];--j){ for(int k=wei;k>=wi[i];--k){ f[j][k]=max(f[j][k],f[j-v[i]][k-wi[i]]+w[i]); } } } cout << f[m][wei];
return 0;
}