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