- 题解
1111
- @ 2026-10-17 9:20:12
#include<bits/stdc++.h>
using namespace std;
int n,m;
int f[105];
int main(){
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++){
for(int j=m;j>=v;j--){
f[j]=max(f[j],f[j-v]+w);
}
}
}
cout<<f[m];
return 0;
}
3 条评论
-
-
```cpp #include<bits/stdc++.h> using namespace std; int v,n,t; int f[210]; struct node{ int w,c; }; vector<node> a[20]; int main(){ cin>>v>>n>>t; for(int i=1;i<=n;i++){ int w,c,p; cin>>w>>c>>p; a[p].push_back({w,c}); } for(int i=1;i<=t;i++){ for(int j=v;j>=1;j--){ for(auto g:a[i]){ if(j>=g.w){ f[j]=max(f[j],f[j-g.w]+g.c); } } } } cout<<f[v]; return 0; } -
#include<bits/stdc++.h> using namespace std; int f[2005],a[20005],b[20005],n,m,k; int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ int v,w,s; cin>>v>>w>>s; for(int j=1;j<=s;j*=2){ k++; a[k]=j*v; b[k]=j*w; s-=j; } if(s){ k++; a[k]=s*v; b[k]=s*w; s=0; } } for(int i=1;i<=k;i++){ for(int j=m;j>=a[i];j--){ f[j]=max(f[j],f[j-a[i]]+b[i]); } } cout<<f[m]; return 0; }
- 1