AcWing 5. 多重背包问题 II
原题链接
中等
作者:
Perkup
,
2025-04-16 00:56:34
· 江西
,
所有人可见
,
阅读 3
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef pair<int,int>PII;
const int N=2010;
int n,m;
int f[N];
int main()
{
vector<PII>alls;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
int v,w,s;
cin>>v>>w>>s;
for(int k=1;k<=s;k++)
{
s-=k;
alls.push_back({k*v,k*w});
}
if(s>0)alls.push_back({s*v,s*w});
}
for(auto item:alls)
for(int j=m;j>=item.x;j--)
f[j]=max(f[j],f[j-item.x]+item.y);
cout<<f[m]<<endl;
return 0;
}