总结:
1.尝试设计多个状态转移方程

2.这道题记录分组的思想与分组背包由异曲同工之妙

#include<bits/stdc++.h>
using namespace std;
int dp[32005], val[65], w[65], sum[65], c[65][20], p[65];
int n, m;
int main()
{cin >> n >> m;for(int i = 1; i <= m; i++){cin >> w[i] >> val[i] >> p[i];        if(p[i] != 0){sum[p[i]]++;c[p[i]][sum[p[i]]] = i;}}for(int i = 1; i <= m; i++)for(int j = n; j >= 0; j--)if(p[i] == 0) {if(j >= w[i]) dp[j] = max(dp[j], dp[j-w[i]]+val[i]*w[i]);if(sum[i] > 0){if(sum[i] == 1){if(j >= w[i]+w[c[i][1]])dp[j] = max(dp[j], dp[j-w[i]-w[c[i][1]]]+val[i]*w[i]+val[c[i][1]]*w[c[i][1]]);}if(sum[i] == 2){if(j >= w[i]+w[c[i][1]])dp[j] = max(dp[j], dp[j-w[i]-w[c[i][1]]]+val[i]*w[i]+val[c[i][1]]*w[c[i][1]]);if(j >= w[i]+w[c[i][2]])dp[j] = max(dp[j], dp[j-w[i]-w[c[i][2]]]+val[i]*w[i]+val[c[i][2]]*w[c[i][2]]);if(j >= w[i]+w[c[i][1]]+w[c[i][2]])dp[j] = max(dp[j], dp[j-w[i]-w[c[i][1]]-w[c[i][2]]]+val[i]*w[i]+val[c[i][1]]*w[c[i][1]]+val[c[i][2]]*w[c[i][2]]);}}}cout << dp[n];return 0;
}

转载于:https://www.cnblogs.com/lovezxy520/p/11355568.html

【题解】p1064 金明的预算方案相关推荐

  1. P1064 金明的预算方案

    P1064 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置 ...

  2. [动态规划] 洛谷P1064 金明的预算方案

    洛谷P1064 金明的预算方案 题意: 每件物品都有一定的满意度,而且物品分主件附件,要买附件就必须要买主件,但是买主件不一定要买附件(一个主件最多有两个附件,也可能没有喔) 设第j件物品的价格为v[ ...

  3. 不止代码:洛谷P1064 金明的预算方案+P2014选课(依赖背包)

    文章目录 题目描述 总结 解析 解法1 解法2 代码 解法3 代码 题目描述 金明的预算方案 选课 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是, ...

  4. P1064 金明的预算方案(分组背包)

    https://www.luogu.org/problemnew/show/P1064 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...

  5. 洛谷 P1064 金明的预算方案【有依赖的分组背包】

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

  6. 洛谷 P1064 金明的预算方案

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

  7. Java实现 洛谷 P1064 金明的预算方案

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

  8. luogu P1064 金明的预算方案

    传送门 这题最难了(认真 发现自己之前搞得树上背包又凉了... 写了一个O(n*V)的dfs序优化贴一下吧 50 minutes later... MD这题怎么D不出来 结果这题不是典型的树dp 因为 ...

  9. 【每日DP】day7P1064 金明的预算方案 (分组背包,我又悟了)难度⭐⭐★

    P1064 金明的预算方案 背包其实就是把一个大问题拆分成若干个子问题,把一个要拿东西的动作按照题目要求分成若干个动作,分别枚举(DP其实就是非常的暴力),比较取最大值. 比如这道题,背包的物品之间是 ...

最新文章

  1. Leetcode | 3Sum
  2. 求捐“一杯奶茶钱”,西北大学真成“最穷211”?
  3. WinForm 布局控件“WeifenLuo.WinFormsUI.Docking“的使用
  4. 【UML】UML扩展的建模概念
  5. 微信小程序页面引入公用头部底部
  6. 电商视觉:焦点图的万能构图模板
  7. 911计算机专业基础综合,青岛大学10数据结构911计算机专业综合
  8. [原创]FOCUS处理系统流程之:流程批量生成(个人专用懒人版)
  9. js正则表达式截取字符串中的数字(不包括正负号)
  10. 上传,修改头像的使用
  11. D - Daydreaming Stockbroker Gym - 101550D
  12. 科技金融企业助力乡村振兴,能有多大新意?
  13. simHash 简介以及 java 实现
  14. 中国报纸今年十大流行语发布:虐俘和审计风暴
  15. 2020牛客暑期多校训练营(第一场)A B-Suffix Array(后缀数组,思维)
  16. Ardiuno驱动Apds9960手势识别
  17. 数字图像处理(matlab版)课本源码和图片
  18. 速学计算机的方法,速记基础:计算机速记方法与学习要点
  19. ToF的多径干扰抑制分析----ToF技术专题系列(四)
  20. 2023济南制药机械展|中国(济南)国际制药机械与包装技术展览会

热门文章

  1. 【Qt】QModbusReply类
  2. 【Linux】一步一步学Linux——type命令(200)
  3. 【Linux】一步一步学Linux——Linux系统常用快捷键(12) 待更新...
  4. ajax如何给label赋值,如何让AjaxEditableLabel显示TextField?
  5. oracle高级复制管理里面,配置高级复制问题,请大家指点!
  6. html5 video如何添加进度条_教你制作独一无二的进度条视频效果
  7. Android获取网络状态
  8. 三角形最小路径和—leetcode120
  9. java 局部性原理_程序局部性原理
  10. 关于使用spring管理hibernate,能够管理事务,却不执行除查询外的增删改操作,不能让数据库数据改变的原因