10pts求调,玄关,在线等
查看原帖
10pts求调,玄关,在线等
819319
wattzyh楼主2024/8/25 21:49
#include<iostream>
using namespace std;
int v[100009],w[100009],dp[100005];//v是价值,w是体积
int main(){
	int n,W,cnt=0;
	cin>>n>>W;
	for(int i=0;i<n;i++){
		int a,b,c;
		cin>>a>>b>>c;
		int p=1;
		if(c>=p){
			c-=p;
			v[++cnt]+=a*p,w[cnt]+=b*p;
			p*=2;
		}
		if(c>0) v[++cnt]+=c*a,w[cnt]+=c*b;
	}//二进制拆分
	for(int i=1;i<=cnt;i++){
		for(int j=W;j>=w[i];j--){
			dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
		}
	}//01背包
	cout<<dp[W];
	return 0;
}
2024/8/25 21:49
加载中...