举杯消愁愁更愁,月底账单入水流 • 4个月前
#include<bits/stdc++.h>
using namespace std;
struct item{
int w,v;
};
vector<item> group[105];
long long dp[105][10005];
int main(){
int n,c,k;
cin>>n>>c>>k; //c组
for(int i=1;i<=n;i++){
int w,v,k; //k表示{w,v}属于哪个组
cin>>w>>v>>k;
group[k].push_back({w,v});
}
for(int i=1;i<=k;i++){ //第一维枚举组号
for(int j=1;j<=c;j++){
dp[i][j]=dp[i-1][j]; //初始化为不选这个组
for(int it=0;it<group[i].size();it++){
if(j>=group[i][it].w){ //枚举选这个组中哪一个
dp[i][j]=max(dp[i][j],dp[i-1][j-group[i][it].w]+group[i][it].v);
}
}
}
}
cout<<dp[k][c]<<endl;
return 0;
}
评论:
请先登录,才能进行评论