原題連結
題解
對於每個容量,當前組 \(i\) 而言,放的決策有 \(size(i)+1\) 種
code
#include<bits/stdc++.h>
using namespace std;
struct unit
{
int w,v;
};
vector<unit> G[1005];
int main()
{
int m,n;
cin>>m>>n;
int len=0;
for(int i=1;i<=n;i++)
{
int x,y,z;
cin>>x>>y>>z;
G[z].push_back({x,y});
len=max(len,z);
}
int dp[1005]={0};
for(int i=1;i<=len;i++)
{
for(int j=m;j>=1;j--)
{
for(auto it: G[i])
{
int w=it.w,v=it.v;
if(j>=w) dp[j]=max(dp[j],dp[j-w]+v);
}
}
}
cout<<dp[m];
return 0;
}