记录编号 245226 评测结果 AAAAAAAAAA
题目名称 [NOIP 2006]金明的预算方案 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-04-02 15:37:16 内存使用 0.14 MiB
显示代码纯文本
#include<stdio.h>
int a[35000]={0},t[500][500]={0},w[1000]={0},c[1000]={0},p[1000]={0};
int _w[1000]={0},_c[1000]={0};
int ww()
{
	freopen("budget.in","r",stdin);
	freopen("budget.out","w",stdout);
	int n,m,i,v,j=1,T=0;
	scanf("%d%d",&m,&n);
	for(i=1;i<=n;i++)
	scanf("%d%d%d",&w[i],&c[i],&p[i]); 
	for(i=1;i<=n;i++)
	{
		if(p[i]==0)
		{
			t[i][0]++;t[i][t[i][0]]=j;
			_c[j]=c[i]*w[i];_w[j++]=w[i];
		}
		else
		{
			t[p[i]][0]++;t[p[i]][t[p[i]][0]]=j;
			_w[j]=w[i]+w[p[i]];
			_c[j++]=w[p[i]]*c[p[i]]+c[i]*w[i];
			if(t[p[i]][0]>2)
			{
				t[p[i]][0]++;t[p[i]][t[p[i]][0]]=j;
			    _w[j]=w[i]+_w[t[p[i]][2]];
			    _c[j++]=_c[t[p[i]][2]]+c[i]*w[i];
			}
		}
	}
	for(i=1;i<=n;i++)
	{
		for(v=m;v>=1;v--)
		for(j=1;j<=t[i][0];j++)
		{
			if(v>=_w[t[i][j]]&&a[v]<=a[v-_w[t[i][j]]]+_c[t[i][j]])
	          a[v]=a[v-_w[t[i][j]]]+_c[t[i][j]];
		}
	}
	printf("%d\n",a[m]);
	return 0;
}
int aaa=ww();
int main(){;}