记录编号 41650 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺二]宝物筛选 最终得分 100
用户昵称 GravatarTBK 是否通过 通过
代码语言 C++ 运行时间 0.821 s
提交时间 2012-08-07 12:35:58 内存使用 3.43 MiB
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <string>
#include <cstring>
#include <cmath>
#include <vector>
#include <set>
#include <algorithm>
using namespace std;
int a[100][3],b,c,d,f[40001],l,m,n,x[40001],y=1,z;
int main(void)
{
	freopen("treasure.in","r",stdin);
	freopen("treasure.out","w",stdout);
	scanf("%d%d",&b,&c);
	for (d=0;d<b;d++) scanf("%d%d%d",&a[d][0],&a[d][1],&a[d][2]);
	for (d=0;d<b;d++)
	{
		for (l=1;l<=a[d][2];a[d][2]-=l,l*=2)
			for (m=c;m>=l*a[d][1];m--)
				f[m]=f[m]>f[m-l*a[d][1]]+l*a[d][0]?f[m]:f[m-l*a[d][1]]+l*a[d][0];
		if (a[d][2]>0) for (m=c;m>=a[d][1]*a[d][2];m--) f[m]=f[m]>f[m-a[d][2]*a[d][1]]+a[d][2]*a[d][0]?f[m]:f[m-a[d][2]*a[d][1]]+a[d][2]*a[d][0];
	}
	printf("%d",f[c]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}