LZOI1397 题解
__cheems__ · · 个人记录
题意
给出
思路
使用类似01背包的思路,即:
求出
#include<bits/stdc++.h>
using namespace std;
int n,V;
int m[100001],v[100001],w[100001];
int dp[100001];
int main(){
cin>>n>>V;
for(int i=1;i<=n;i++){
cin>>m[i]>>w[i]>>v[i];
}
for(int i=1;i<=n;i++){
for(int j=V;j>=w[i];j--){
for(int k=1;k<=min(j/w[i],m[i]);k++){
dp[j]=max(dp[j-w[i]*k]+v[i]*k,dp[j]);
}
}
}
cout<<dp[V]<<endl;
return 0;
}