1. #include <cstring>
  2. #include <iostream>
  3. #include <algorithm>
  4. #include <vector>
  5. #define v first
  6. #define w second
  7. using namespace std;
  8. typedef pair<int, int> PII;
  9. const int N = , M = ;
  10. int n, m;
  11. PII master[N];
  12. vector<PII> servent[N];
  13. int f[M];
  14. int main() {
  15. cin >> m >> n;//m总钱数 n个数
  16. for (int i = ; i <= n; i ++ ) {
  17. int v, p, q;
  18. cin >> v >> p >> q;
  19. p *= v;//价值
  20. if (!q) master[i] = {v, p};//如果是0,表示为主件
  21. else servent[q].push_back({v, p});//如果不是0,为附件,插入相关主键
  22. }
  23. for (int i = ; i <= n; i ++ )//个数
  24. for (int u = m; u >= ; u -- ) {//总钱数
  25. for (int j = ; j < << servent[i].size(); j ++ )
  26. //转换为二进制,对于每个主件,有几种选法
  27. {
  28. int v = master[i].v, w = master[i].w;
  29. for (int k = ; k < servent[i].size(); k ++ )
  30. if (j >> k & )
  31. {//如果第k位是1,那就说明选第k个
  32. v += servent[i][k].v;
  33. w += servent[i][k].w;
  34. }
  35. if (u >= v) f[u] = max(f[u], f[u - v] + w);
  36. }
  37. }
  38. cout << f[m] << endl;
  39. return ;
  40. }
  1. #include<iostream>
  2. #include<vector>
  3. #define v first
  4. #define w second
  5. using namespace std ;
  6. typedef pair<int,int>PII;
  7. const int N=;
  8. int f[N];
  9. int n,m;
  10. vector<PII>servent[N];
  11. PII master[N];
  12. int main()
  13. {
  14. cin>>m>>n;
  15. for(int i=;i<=n;i++)
  16. {
  17. int v,p,q;
  18. cin>>v>>p>>q;
  19. p*=v;
  20. if(!q)
  21. master[i]={v,p};
  22. else
  23. servent[q].push_back({v,p});
  24. }
  25. for(int i=;i<=n;i++)
  26. for(int j=m;j>=;j--)
  27. for(int k=;k< <<servent[i].size();k++)
  28. {
  29. int w=master[i].w,v=master[i].v;
  30. for(int u=;u<servent[i].size();u++)
  31. {
  32. if(k>>u&)
  33. {
  34. w+=servent[i][u].w;
  35. v+=servent[i][u].v;
  36. }
  37. }
  38. if(j>=v)
  39. f[j]=max(f[j],f[j-v]+w);
  40. }
  41. cout<<f[m]<<endl;
  42. return ;
  43. }

AcWing 487. 金明的预算方案的更多相关文章

  1. [codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案

    [codevs1155][KOJ0558][COJ0178][NOIP2006]金明的预算方案 试题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴 ...

  2. NOIP2006 金明的预算方案

    1.             金明的预算方案 (budget.pas/c/cpp) [问题描述] 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...

  3. 动态规划(背包问题):HRBUST 1377 金明的预算方案

    金明的预算方案 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱就行 ...

  4. Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划)

    Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划) Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己 ...

  5. [LuoguP1064][Noip2006]金明的预算方案

    金明的预算方案(Link) 题目描述 现在有\(M\)个物品,每一个物品有一个钱数和重要度,并且有一个\(Q\),如果\(Q = 0\),那么该物件可以单独购买,当\(Q != 0\)时,表示若要购买 ...

  6. 算法笔记_103:蓝桥杯练习 算法提高 金明的预算方案(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些 ...

  7. tyvj 1057 金明的预算方案 背包dp

    P1057 金明的预算方案 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP2006 提高组 第二道 描述 金明今天很开心,家里购置的新房就要领钥匙了 ...

  8. 【洛谷P1064】[NOIP2006] 金明的预算方案

    金明的预算方案 显然是个背包问题 把每个主件和它对应的附件放在一组,枚举每一组,有以下几种选法: 1.都不选 2.只选主件 3.一个主件+一个附件 4.一个主件+两个附件 于是就成了01背包.. #i ...

  9. 「NOIP2006」「LuoguP1064」 金明的预算方案(分组背包

    题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NNN元钱就行” ...

随机推荐

  1. 00-django | 01-构建博客目录

    00-django | 01-构建博客目录 python Django 创建blog 进入到 manage.py 文件所在的目录(即项目根目录)下,运行 pipenv run python manag ...

  2. P4392 [BOI2007]Sound 静音问题

    ---------------------- 链接:Miku ----------------------- 这道题本质上还是个st表,只要两个st表,然后对于每一个点,查询他开始的 长度为m的去年的 ...

  3. 线段树区间染色 ZOJ 1610

    Count the Colors ZOJ - 1610 传送门 线段树区间染色求染色的片段数 #include <cstdio> #include <iostream> #in ...

  4. rsa special

    [ReSnAd] -- iqmp ipmq e,c,\(\phi(n)\) 题目: class Key: PRIVATE_INFO = ['P', 'Q', 'D', 'DmP1', 'DmQ1'] ...

  5. NIO学习笔记,从Linux IO演化模型到Netty—— Java NIO零拷贝

    同样只是大致上的认识. 其中,当使用transferFrom,transferTo的时候用的sendfile(). 如果系统内核不支持 sendfile,进一步执行 transferToTrusted ...

  6. win10 系统到期的解决方案

    本人是 win10 教育版,今天多次提醒 windows 要到期了(烦银).所以网上找到了解决方法,记录一下. 废话:win10 与之前的 windows 版本一样,有家庭版.专业版.企业版等各个版本 ...

  7. Patter discovery VS clustering

    “pattern driven” (PD) is based on enumerating candidate patterns in a given solution space and picki ...

  8. Centos 7 firewall的防火墙的规则

    这是官方文档: http://www.firewalld.org/documentation/man-pages/firewall-cmd.html 想使用iptables的规则,firewall也可 ...

  9. 限定输入框只能输入数字, TextBox的TextChanged事件调用

    /// <summary> /// 限定输入框只能输入数字, TextBox的TextChanged事件调用 /// </summary> /// <param name ...

  10. JavaScript-跨浏览器事件处理程序(EventUtil)

    事件操作对象: var EventUtil= { //添加事件 addHandler: function (element, type, handler) { if (element.addEvent ...