思路:这就是一个分组背包的模板题
#include <bits/stdc++.h>
using namespace std;
int v,n,t;
int x,tot=0;
int g[205][205];
int w[10010],z[10010],b[10010],dp[10010];
int main()
{
int v,n; cin>>v>>n;
for(int i=1;i<=n;i++){
cin>>w[i]>>z[i]>>x;
tot = max(tot,x);
b[x]++;
g[x][b[x]] = i;
}
for(int i=1;i<=tot;i++){
for(int j=v;j>=0;j--){
for(int k=1;k<=b[i];k++){
if(j>=w[g[i][k]]){
dp[j]=max(dp[j],dp[j-w[g[i][k]]]+z[g[i][k]]);
}
}
}
}
cout<<dp[v];
return 0;
}