1 solutions
-
1
#include <bits/stdc++.h> using namespace std; int n,m,dp[6001]; struct prize{ int v,w; }; vector<prize> a; int main(){ scanf("%d%d",&n,&m); a.push_back({0,0}); for(int i = 1;i<=n;i++){ int b,c,d; scanf("%d%d%d",&b,&c,&d); for(int j = 1;j<=d;j++)a.push_back({b,c}); } int aa = a.size(); for(int i = 1;i<aa;i++) for(int j = m;j>=a[i].v;j--)dp[j] = max(dp[j],dp[j-a[i].v]+a[i].w); printf("%d",dp[m]); return 0; }
#include <bits/stdc++.h> using namespace std; int n,m,dp[6001]; struct prize{ int v,w,s; }; vector<prize> a; int main(){ scanf("%d%d",&n,&m); a.push_back({0,0,0}); for(int i = 1;i<=n;i++){ int b,c,d; scanf("%d%d%d",&b,&c,&d); a.push_back({b,c,d}); } int aa = a.size(); for(int i = 1;i<aa;i++) for(int j = m;j>=a[i].v;j--) for(int k = 0;k<=min(j/a[i].v,a[i].s);k++)dp[j] = max(dp[j],dp[j-a[i].v*k]+a[i].w*k); printf("%d",dp[m]); return 0; }
#include <bits/stdc++.h> using namespace std; int wi,vi,si,m,n,cnt,v[2001],w[2001],dp[6001]; int main(){ scanf("%d%d",&n,&m); for(int i = 1;i<=n;i++){ scanf("%d%d%d",&vi,&wi,&si); for(int j = 1;j<=si;j*=2){ cnt++; v[cnt] = vi*j; w[cnt] = wi*j; si-=j; } if(si){ cnt++; v[cnt] = vi*si; w[cnt] = wi*si; } } for(int i = 1;i<=cnt;i++) for(int j = m;j>=v[i];j--)dp[j] = max(dp[j],dp[j-v[i]]+w[i]); printf("%d",dp[m]); return 0; }
Information
- ID
- 745
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 9
- Tags
- (None)
- # Submissions
- 21
- Accepted
- 3
- Uploaded By