记录编号 318829 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010冲刺二]宝物筛选 最终得分 100
用户昵称 GravatarGo灬Fire 是否通过 通过
代码语言 C++ 运行时间 0.154 s
提交时间 2016-10-09 21:25:04 内存使用 0.52 MiB
显示代码纯文本
  1. /*
  2. Name: 宝物筛选COGS
  3. Copyright:
  4. Author: Go灬Fire
  5. Date: 09/10/16 21:25
  6. Description: 宝物筛选,多重背包,二进制优化
  7. */
  8. #include<cmath>
  9. #include<cstring>
  10. #include<algorithm>
  11. #include<cstdio>
  12. #include<iostream>
  13. #include<cstdlib>
  14. #define Begin freopen("treasure.in","r",stdin);freopen("treasure.out","w",stdout);
  15. #define End fclose(stdin);fclose(stdout);
  16. using namespace std;
  17. const int maxn=5010;
  18. int n,tot,v[maxn],w[maxn],f[45000];
  19. void Init();
  20.  
  21. int main(){
  22. Begin;
  23. Init();
  24. //system("pause");
  25. return 0;
  26. }
  27. void Init(){
  28. scanf("%d%d",&n,&tot);
  29. int cnt=0;
  30. for(int i=1;i<=n;i++){
  31. int x,y,z;scanf("%d%d%d",&x,&y,&z);
  32. int t=1;
  33. while(z>=t){
  34. v[++cnt]=t*x;
  35. w[cnt]=t*y;
  36. z-=t;
  37. t<<=1;
  38. }
  39. if(z){
  40. v[++cnt]=z*x;
  41. w[cnt]=z*y;
  42. }
  43. }
  44. for(int i=1;i<=cnt;i++){
  45. for(int j=tot;j>=w[i];j--){
  46. f[j]=max(f[j],f[j-w[i]]+v[i]);
  47. }
  48. }
  49. printf("%d\n",f[tot]);
  50. }