【题解】p1064 金明的预算方案
总结:
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 金明的预算方案相关推荐
- P1064 金明的预算方案
P1064 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置 ...
- [动态规划] 洛谷P1064 金明的预算方案
洛谷P1064 金明的预算方案 题意: 每件物品都有一定的满意度,而且物品分主件附件,要买附件就必须要买主件,但是买主件不一定要买附件(一个主件最多有两个附件,也可能没有喔) 设第j件物品的价格为v[ ...
- 不止代码:洛谷P1064 金明的预算方案+P2014选课(依赖背包)
文章目录 题目描述 总结 解析 解法1 解法2 代码 解法3 代码 题目描述 金明的预算方案 选课 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是, ...
- P1064 金明的预算方案(分组背包)
https://www.luogu.org/problemnew/show/P1064 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...
- 洛谷 P1064 金明的预算方案【有依赖的分组背包】
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱 ...
- 洛谷 P1064 金明的预算方案
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N元钱 ...
- Java实现 洛谷 P1064 金明的预算方案
题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元 ...
- luogu P1064 金明的预算方案
传送门 这题最难了(认真 发现自己之前搞得树上背包又凉了... 写了一个O(n*V)的dfs序优化贴一下吧 50 minutes later... MD这题怎么D不出来 结果这题不是典型的树dp 因为 ...
- 【每日DP】day7P1064 金明的预算方案 (分组背包,我又悟了)难度⭐⭐★
P1064 金明的预算方案 背包其实就是把一个大问题拆分成若干个子问题,把一个要拿东西的动作按照题目要求分成若干个动作,分别枚举(DP其实就是非常的暴力),比较取最大值. 比如这道题,背包的物品之间是 ...
最新文章
- Leetcode | 3Sum
- 求捐“一杯奶茶钱”,西北大学真成“最穷211”?
- WinForm 布局控件“WeifenLuo.WinFormsUI.Docking“的使用
- 【UML】UML扩展的建模概念
- 微信小程序页面引入公用头部底部
- 电商视觉:焦点图的万能构图模板
- 911计算机专业基础综合,青岛大学10数据结构911计算机专业综合
- [原创]FOCUS处理系统流程之:流程批量生成(个人专用懒人版)
- js正则表达式截取字符串中的数字(不包括正负号)
- 上传,修改头像的使用
- D - Daydreaming Stockbroker Gym - 101550D
- 科技金融企业助力乡村振兴,能有多大新意?
- simHash 简介以及 java 实现
- 中国报纸今年十大流行语发布:虐俘和审计风暴
- 2020牛客暑期多校训练营(第一场)A B-Suffix Array(后缀数组,思维)
- Ardiuno驱动Apds9960手势识别
- 数字图像处理(matlab版)课本源码和图片
- 速学计算机的方法,速记基础:计算机速记方法与学习要点
- ToF的多径干扰抑制分析----ToF技术专题系列(四)
- 2023济南制药机械展|中国(济南)国际制药机械与包装技术展览会
热门文章
- 【Qt】QModbusReply类
- 【Linux】一步一步学Linux——type命令(200)
- 【Linux】一步一步学Linux——Linux系统常用快捷键(12) 待更新...
- ajax如何给label赋值,如何让AjaxEditableLabel显示TextField?
- oracle高级复制管理里面,配置高级复制问题,请大家指点!
- html5 video如何添加进度条_教你制作独一无二的进度条视频效果
- Android获取网络状态
- 三角形最小路径和—leetcode120
- java 局部性原理_程序局部性原理
- 关于使用spring管理hibernate,能够管理事务,却不执行除查询外的增删改操作,不能让数据库数据改变的原因