记录编号 156864 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺二]宝物筛选 最终得分 100
用户昵称 Gravatar筽邝 是否通过 通过
代码语言 C++ 运行时间 0.161 s
提交时间 2015-04-06 18:03:55 内存使用 0.47 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7. int n,m;
  8. int f[40010];
  9.  
  10. inline void ZeroOneDP(int v,int w)
  11. {
  12. for (int i=m; i>=v; i--)
  13. f[i]=max(f[i],f[i-v]+w);
  14. }
  15.  
  16. inline void MultiDP()
  17. {
  18. for (int i=1; i<=n; i++)
  19. {
  20. int V,W,C;
  21. scanf("%d%d%d",&W,&V,&C);
  22. for (int k=1; k<=C; k<<=1)
  23. {
  24. ZeroOneDP(k*V,k*W);
  25. C-=k;
  26. }
  27. if (C>0)
  28. ZeroOneDP(C*V,C*W);
  29. }
  30. }
  31.  
  32. int main()
  33. {
  34. freopen("treasure.in","r",stdin);
  35. freopen("treasure.out","w",stdout);
  36.  
  37. scanf("%d%d",&n,&m);
  38. MultiDP();
  39. printf("%d",f[m]);
  40.  
  41. return 0;
  42. }
  43.