0分求调
查看原帖
0分求调
1139975
封禁用户楼主2024/7/4 11:39

有关注

#include<bits/stdc++.h>
using namespace std;
const int N=100086;
int n,w,t[N],c[N],a[N],dp[N];
int main()
{
	cin>>n>>w;
	for(int i=1;i<=n;i++)
	{
		cin>>t[i]>>c[i]>>a[i];
	}
	for(int i=1;i<=n;i++)//将01背包转化为多重背包 
	{
		for(int j=w;j>=c[i];j--)
		{                        
		    for(int l=1;l<=a[i];l++)
			{               
				if(j-c[i]*l<0)
				{
					break;
				}                    
				dp[j]+=max(dp[j],dp[j-c[i]*l]+t[i]*l);           
			}                           
		}     
	}
	cout<<dp[w];
} 
2024/7/4 11:39
加载中...