1 条题解
-
0zyx303 LV 7 @ 2018-05-27 12:03:21
其实就是3种背包的混合体
cpp
#include "bits/stdc++.h"
using namespace std;
int c[100001],w[100001],cont[100001],dp[100001];
int main()
{
int v,n;
cin>>v>>n;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&c[i],&w[i],&cont[i]);
}
for(int i=1;i<=n;i++)
{
if(cont[i]==0)
{
for(int j=0;j<=v;j++)
{
if(j>=c[i])
dp[j]=max(dp[j],dp[j-c[i]]+w[i]);
}
}
else
{
for(int j=v;j>=0;j--)
{
for(int k=1;k<=cont[i];k++)
{
if(j>=k*c[i])
dp[j]=max(dp[j],dp[j-c[i]*k]+w[i]*k);
}
}
}
}
cout<<dp[v];
}
- 1
信息
- 难度
- 9
- 分类
- (无)
- 标签
- 递交数
- 11
- 已通过
- 4
- 通过率
- 36%
- 上传者