记录编号 128588 评测结果 AAAAAAAAAA
题目名称 神偷小智 最终得分 100
用户昵称 Gravatar乌龙猹 是否通过 通过
代码语言 C++ 运行时间 0.128 s
提交时间 2014-10-17 21:32:18 内存使用 0.98 MiB
显示代码纯文本
#include<cstdio>
using namespace std;

int n,m;
int sum=0;
int f[301][601];

int dfs()
{
	int x,y,num;
	int w,v,p,q;
	sum++;
	num=sum;
	scanf("%d%d",&x,&y);
	if(y==0)
	{
		p=dfs();
		q=dfs();
		for(int i=0;i<=n;++i)
		{
			for(int j=0;j<=i-2*x;++j)
			{
				if(f[p][j]+f[q][i-j-2*x]>f[num][i])
				{
					f[num][i]=f[p][j]+f[q][i-j-2*x];
				}
			}
		}
	}
	else
	{
		for(int i=1;i<=y;++i)
		{
			scanf("%d%d",&w,&v);
			for(int j=n;j>=2*x+v;--j)
			{
				if(f[num][j-v]+w>f[num][j])
				{
					f[num][j]=f[num][j-v]+w;
				}
			}
		}
	}
	return num;
}

int main()
{
	freopen("steal.in","r",stdin);
	freopen("steal.out","w",stdout);
	scanf("%d",&n);
	m=dfs();
	printf("%d",f[m][n-1]);
	return 0;
}