记录编号 245156 评测结果 AAAAAAAAAA
题目名称 [NOIP 2006]金明的预算方案 最终得分 100
用户昵称 GravatarGaoErFu 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-04-02 12:13:43 内存使用 0.00 MiB
显示代码纯文本
#include<stdio.h>
int v[1010]={0},c[1010]={0},f[32010]={0},q[100][4]={0},t[110][110]={0};
int cc()
{
	freopen("budget.in","r",stdin);
	freopen("budget.out","w",stdout);
	int N,m,n,i,j,k,x,y,z,num=0;
	scanf("%d%d",&N,&m);n=m;
	for(i=1;i<=m;i++)
	{
		scanf("%d%d%d",&x,&y,&z);
		if(z==0)
		{
			v[i]=x;
			c[i]=y*v[i];
			t[i][++t[i][0]]=i;
		}
		else 
		{
			q[++num][1]=x;
			q[num][2]=x*y;
			q[num][3]=z;
		}
	}
	for(i=1;i<=num;i++)
	{
		k=i;
		while(q[i][3]==q[k][3])
		k++;
		k--; 
		if(k-i==0)
		{
			m++;
			t[q[k][3]][++t[q[k][3]][0]]=m;
			v[m]=q[k][1]+v[q[k][3]];
			c[m]=q[k][2]+c[q[k][3]];
		}
		else if(k-i==1)
		{
			m++;
			t[q[i][3]][++t[q[i][3]][0]]=m;
			v[m]=q[i][1]+v[q[i][3]];
			c[m]=q[i][2]+c[q[i][3]];
			m++;
			t[q[k][3]][++t[q[k][3]][0]]=m;
			v[m]=q[k][1]+v[q[k][3]];
			c[m]=q[k][2]+c[q[k][3]];
			m++;
			t[q[k][3]][++t[q[k][3]][0]]=m;
			v[m]=q[k][1]+v[q[k][3]]+q[i][1];
			c[m]=q[k][2]+c[q[k][3]]+q[i][2];
		}
		i=k;
	}
	for(i=1;i<=n;i++)
	{if(t[i][0]==0)continue;
	for(j=N;j>=1;j--)
	{
		for(k=1;k<=t[i][0];k++)
		if(j>=v[t[i][k]]&&f[j-v[t[i][k]]]+c[t[i][k]]>f[j])
		f[j]=f[j-v[t[i][k]]]+c[t[i][k]];
	}
	}
	printf("%d",f[N]);
	return 0;
}
int xxx=cc();
int main(){;}