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; } 
- 1
 
信息
- ID
 - 5590
 - 时间
 - 1000ms
 - 内存
 - 256MiB
 - 难度
 - 10
 - 标签
 - (无)
 - 递交数
 - 2
 - 已通过
 - 1
 - 上传者