AC

举杯消愁愁更愁,月底账单入水流  •  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;
}

评论:

请先登录,才能进行评论