题目描述
金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过NN元钱就行”。今天一早,金明就开始做预算了,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:

主件 附件

电脑 打印机,扫描仪

书柜 图书

书桌 台灯,文具

工作椅 无

如果要买归类为附件的物品,必须先买该附件所属的主件。每个主件可以有00个、11个或22个附件。附件不再有从属于自己的附件。金明想买的东西很多,肯定会超过妈妈限定的NN元。于是,他把每件物品规定了一个重要度,分为55等:用整数1-51−5表示,第55等最重要。他还从因特网上查到了每件物品的价格(都是1010元的整数倍)。他希望在不超过NN元(可以等于NN元)的前提下,使每件物品的价格与重要度的乘积的总和最大。

请你帮助金明设计一个满足要求的购物单。

输入输出格式
输入格式:
第11行,为两个正整数,用一个空格隔开:

N mNm (其中N(<32000)表示总钱数,m(<60)为希望购买物品的个数。) 从第2行到第m+1行,第j行给出了编号为j−1的物品的基本数据,每行有3个非负整数

v p q (其中v表示该物品的价格(v<10000),p表示该物品的重要度(1−5),q表示该物品是主件还是附件。如果q=0,表示该物品为主件,如果q>0,表示该物品为附件,q是所属主件的编号)

输出格式:
一个正整数,为不超过总钱数的物品的价格与重要度乘积的总和的最大值(<200000)。

输入输出样例
输入样例#1:
1000 5
800 2 0
400 5 1
300 5 1
400 3 0
500 2 0
输出样例#1:
2200

import java.util.Scanner;public class jinmingdeyusuanfangan {public static int max(int a,int b,int c){return 0;}public static void main(String[] args) {int n,m,v,p,q;int maxn = 40000;int [] []f = new int [70][maxn];int [] []value = new int [70][3];int [] []imp = new int [70][3];Scanner sc =new Scanner(System.in);n = sc.nextInt();m = sc.nextInt();for (int i = 1; i <=m; i++) {v=sc.nextInt();p=sc.nextInt();q=sc.nextInt();//为主件 if (q==0){value[i][0] = v;imp[i][0] = p;}//为附件 else{if (value[q][1]==0){value[q][1] = v;imp[q][1] = p;}else{value[q][2] = v;imp[q][2] = p;}}}for(int i=1; i<=m; i++){for(int j=1; j<=n; j++){if (j-value[i][0]>=0){//仅主件 f[i][j] = Math.max(f[i-1][j],f[i-1][j-value[i][0]] + value[i][0]*imp[i][0]);//这个时候的f[i][j]表示仅有主件的时候的情况,而下面每种加附件的情况,都是在有主件的基础下,所以//直接和f[i][j]比较 //主件 + 附件1 if (j-value[i][0]-value[i][1]>=0)f[i][j] = Math.max(f[i][j],f[i-1][j-value[i][0]-value[i][1]] + value[i][0]*imp[i][0] + value[i][1]*imp[i][1]);//主件 + 附件2 if (j-value[i][0]-value[i][2]>=0)f[i][j] = Math.max(f[i][j],f[i-1][j-value[i][0]-value[i][2]] + value[i][0]*imp[i][0] + value[i][2]*imp[i][2]);//主件 + 所有附件if (j-value[i][0]-value[i][1]-value[i][2]>=0)f[i][j] = Math.max(f[i][j],f[i-1][j-value[i][0]-value[i][1]-value[i][2]] + value[i][0]*imp[i][0] + value[i][1]*imp[i][1] + value[i][2]*imp[i][2]);}elsef[i][j] = f[i-1][j];}}System.out.println(f[m][n]);}}

Java实现 洛谷 P1064 金明的预算方案相关推荐

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

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

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

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

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

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

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

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

  5. 洛谷——1064金明的预算方案————有依赖的背包

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

  6. P1064 金明的预算方案

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

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

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

  8. luogu P1064 金明的预算方案

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

  9. 【题解】p1064 金明的预算方案

    总结: 1.尝试设计多个状态转移方程 2.这道题记录分组的思想与分组背包由异曲同工之妙 #include<bits/stdc++.h> using namespace std; int d ...

最新文章

  1. 史上最大规模ACL大会放榜,百度10篇NLP论文被录用!
  2. java多线程机制2(安全问题)
  3. 算法解读 ---- 递归(一)
  4. restTemplate 传递map
  5. [原创]Enterprise Architecture V7.5 C++代码生成时,头文件中函数声明没有注释,CPP中函数定义却有注释。...
  6. android自动运行服务,Android开机自启动服务的实现方法
  7. Android逆向基础笔记—Android中的常用ARM汇编指令
  8. centos服务器之间copy文件夹命令,Centos下如何拷贝整个目录命令?Centos下拷贝目录命令的方法...
  9. NOIP2013TGDay1
  10. CMake的安装(超级详细)
  11. 关于 FAT12 文件系统
  12. 深度学习tracking学习笔记(2):图像/视觉显著性检测技术发展情况梳理(Saliency Detection、Visual Attention)
  13. 中国脑计划颠覆性创新之路九,进化的方向,脑科学,互联网和人工智能联合突破达尔文进化论局限
  14. 简化的围棋棋子规则(C++实现)
  15. mysql 联合主键 null_提问关于 mysql得联合主键和复合主键的问题
  16. Jetbrain 如何使用教育邮箱激活
  17. 基于 selenium 模拟登陆 12306 滑块问题 已解决
  18. 【荣耀开发者服务平台—百亿曝光扶持等你来】智慧服务快应用卡片接入指南(下)
  19. 详解CAD软件2023功能更新-7个随附专业化工具组合
  20. 医疗协议HL7的内容构成

热门文章

  1. PHP数组关于数字键名的问题
  2. 一年多推行每日构建的经验总结
  3. web前端大作业 (仿英雄联盟网站制作html css javascript) 学生dreamweaver网页设计作业
  4. java中jdbc查询有返回值_使用JdbcTemplate查询方法的返回值 | 学步园
  5. 需要密码才能打开的word文件
  6. js 万年历农历转阳历 方法_JS实现带阴历的日历功能详解
  7. 交换机工作原理及实验分析
  8. 【阿里云云计算工程师ACP认证】什么是ACP
  9. 微信小游戏 - Canvas/WebGL Demo 移植
  10. 网络爬虫的“盗亦有道”