1 条题解
-
1
#include<iostream> using namespace std; const int N = 1100; int f[N][N],v[N],w[N],s[N]; int n,m; int cnt; int main() { cin >> n >> m; while(n --) { int a,b,c; cin >> a >> b >> c; int k = 1; while(c >= k) { c -= k; cnt ++; v[cnt] = a * k; w[cnt] = b * k; k <<= 1; } if(c) { cnt ++; v[cnt] = a * c; w[cnt] = b * c; } } n = cnt; for(int i = 1;i <= n; ++ i) { for(int j = 1; j <= m; ++ j) { if(j >= v[i]) f[i][j] = max(f[i - 1][j], f[i - 1][j - v[i]] + w[i]); else f[i][j]=f[i-1][j]; } } cout << f[n][m] << endl; return 0; }
信息
- ID
- 5549
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者