记录编号 |
49592 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
还是“金明的预算方案” |
最终得分 |
100 |
用户昵称 |
王者自由 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.074 s |
提交时间 |
2012-11-08 15:48:10 |
内存使用 |
2.20 MiB |
显示代码纯文本
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 32000 + 10, M = 60 + 10, S = 10 + 10;
int n, m, s;
int v[M], p[M], q[M], w[M];
int a[N], f[N];
int main() {
freopen("budgetb.in","r",stdin);
freopen("budgetb.out","w",stdout);
scanf("%d %d %d", &n, &m, &s);
for(int i=1; i<=m; i++) {
scanf("%d %d %d", &v[i], &p[i], &q[i]);
w[i] = v[i] * p[i];
}
for(int i=1; i<=m; i++) if(!q[i]) {
fill_n(a, v[i], 0);
for(int j=v[i]; j<=n; j++)
a[j] = f[j - v[i]] + w[i];
for(int j=1; j<=m; j++) if(q[j] == i)
for(int k = n; k >= v[i] + v[j]; k--)
a[k] = max(a[k], a[k - v[j]] + w[j]);
for(int j=v[i]; j<=n; j++)
f[j] = max(f[j], a[j]);
}
printf("%d\n", f[n]);
return 0;
}