记录编号 |
245226 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[NOIP 2006]金明的预算方案 |
最终得分 |
100 |
用户昵称 |
521 |
是否通过 |
通过 |
代码语言 |
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(){;}