记录编号 245226 评测结果 AAAAAAAAAA
题目名称 [NOIP 2006]金明的预算方案 最终得分 100
用户昵称 Gravatar521 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2016-04-02 15:37:16 内存使用 0.14 MiB
显示代码纯文本
  1. #include<stdio.h>
  2. int a[35000]={0},t[500][500]={0},w[1000]={0},c[1000]={0},p[1000]={0};
  3. int _w[1000]={0},_c[1000]={0};
  4. int ww()
  5. {
  6. freopen("budget.in","r",stdin);
  7. freopen("budget.out","w",stdout);
  8. int n,m,i,v,j=1,T=0;
  9. scanf("%d%d",&m,&n);
  10. for(i=1;i<=n;i++)
  11. scanf("%d%d%d",&w[i],&c[i],&p[i]);
  12. for(i=1;i<=n;i++)
  13. {
  14. if(p[i]==0)
  15. {
  16. t[i][0]++;t[i][t[i][0]]=j;
  17. _c[j]=c[i]*w[i];_w[j++]=w[i];
  18. }
  19. else
  20. {
  21. t[p[i]][0]++;t[p[i]][t[p[i]][0]]=j;
  22. _w[j]=w[i]+w[p[i]];
  23. _c[j++]=w[p[i]]*c[p[i]]+c[i]*w[i];
  24. if(t[p[i]][0]>2)
  25. {
  26. t[p[i]][0]++;t[p[i]][t[p[i]][0]]=j;
  27. _w[j]=w[i]+_w[t[p[i]][2]];
  28. _c[j++]=_c[t[p[i]][2]]+c[i]*w[i];
  29. }
  30. }
  31. }
  32. for(i=1;i<=n;i++)
  33. {
  34. for(v=m;v>=1;v--)
  35. for(j=1;j<=t[i][0];j++)
  36. {
  37. if(v>=_w[t[i][j]]&&a[v]<=a[v-_w[t[i][j]]]+_c[t[i][j]])
  38. a[v]=a[v-_w[t[i][j]]]+_c[t[i][j]];
  39. }
  40. }
  41. printf("%d\n",a[m]);
  42. return 0;
  43. }
  44. int aaa=ww();
  45. int main(){;}