求助多重背包
  • 板块灌水区
  • 楼主华悦泽
  • 当前回复10
  • 已保存回复10
  • 发布时间2021/12/12 12:34
  • 上次更新2023/11/3 22:23:28
查看原帖
求助多重背包
549617
华悦泽楼主2021/12/12 12:34
#include<bits/stdc++.h>
using namespace std;
int n,m;
int am[100005],w[100005],v[100005];
int dp[10005][1005];
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>w[i]>>v[i]>>am[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<=m;j++){
			for(int k=0;k<=am[i]&&k*w[i]<=j;k++){
				dp[i][j]=max(dp[i][j],dp[i-1][j-k*w[i]]+k*v[i]);
			}
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++) ans=max(ans,dp[i][m]);
	cout<<ans;
	return 0;
}
2021/12/12 12:34
加载中...