【华为机试】HJ16 购物单
1. 题目
输入示例
1000 5
800 2 0
400 5 1
300 5 1
400 3 0
500 2 0
输出示例
2200
2. 分析
看了一遍题目,看了两遍题目,…,看了n遍题目。没思路!!!
看其他人的代码似乎,这似乎是有依赖的背包问题,经典题目叫做“金明的预算方案”。
- 背包九讲——全篇详细理解与代码实现
- 【NOIP2006】金明的预算方案 这篇我感觉说明的很清楚了,我的代码就是按照这个的思路,稍微改了一点点。
3.代码
#include <bits/stdc++.h>
#define max(x,y) (x>y)?x:yusing namespace std;int v[61][3]; //存放 价格
int w[61][3]; //存放 (价格*重要度)
int dp[61][32000];int main(){int N, m;cin >> N >> m;int a, b, c;for(int i=1; i<=m; i++){cin >> a >> b >> c;if(c){ // 如果是附件if(w[c][1]){ //已有第一个附件,作为第二个附件v[c][2] = a;w[c][2] = a*b;}else{ //没有第一个附件,作为第一个附件v[c][1] = a;w[c][1] = a*b;}}else{ //主件v[i][0] = a;w[i][0] = a*b;}}// dp动态规划for(int i=1; i<=m; i++){for(int j=1; j<=N; j++){dp[i][j] = dp[i-1][j]; // 1、什么都不买if(v[i][0] <= j){ // 2、只买主件dp[i][j] = max(dp[i][j], dp[i-1][j-v[i][0]]+w[i][0]);}if(v[i][0] + v[i][1] <= j){ // 3、买主件和附件1dp[i][j] = max(dp[i][j], dp[i-1][j-v[i][0]-v[i][1]]+w[i][0]+w[i][1]);}if(v[i][0] + v[i][2] <= j){ //4.买主件和附件2dp[i][j] = max(dp[i][j], dp[i-1][j-v[i][0]-v[i][2]]+w[i][0]+w[i][2]);}if(v[i][0] + v[i][1] + v[i][2] <= j){ //买主件和附件1和附件2dp[i][j] = max(dp[i][j], dp[i-1][j-v[i][0]-v[i][1]-v[i][2]]+w[i][0]+w[i][1]+w[i][2]);}}}cout << dp[m][N] << endl;return 0;
}
动态规划是真的学不会啊。。。(就算给我原题我都不一定能做出来!理直气壮.jpg
【华为机试】HJ16 购物单相关推荐
- 华为机试HJ16:购物单
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 王强今天很开心,公司发给N元的年终奖.王强决定把年终奖用于购物,他把想买的物品分为两 ...
- 华为机试JAVA 免单统计
免单统计 题目描述 某商城举办了一个促销活动,如果某顾客是某一秒内早时刻下单的顾客(可能是多个人),则可以 获取免单.请你编程计算有多少顾客可以获取免单. 解答要求 时间限制:3000ms, 内存 ...
- 牛客在线编程-华为机试-中等
牛客在线编程题目-华为机试-中等 题号 题目 知识点 难度 通过率 HJ16 购物单 动态规划 中等 21.21% HJ17 坐标移动 字符串 中等 24.79% HJ20 密码验证合格程序 数组 字 ...
- 华为机试108题(C 语言解答)
Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...
- 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...
- JavsScript牛客网华为机试(11-20)题解
牛客网华为机试题解JavaScript版本 华为机试第11-20题解答(js) 11.数字颠倒 12.字符串反转 13.句子逆序 14.字符串排序 15.求int型数据在内存中存储时1的个数 16.购 ...
- 华为机试题目:工单调用策略
华为机试题目来源:华为优招机试(2021年7月7) - 代码先锋网 一.工单调用策略 当小区通信设备上报警时,系统会自动生成待处理的工单,华为工单调度系统需要根据不同的策略,调度外线工程师(FME)上 ...
- 华为机试(扑克牌大小3.3)
华为机试(扑克牌大小3.3) 题目 扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张.牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写J ...
- 华为机试 经验(血泪史啊)
参加华为机试,第一道题竟然没有做完. 原题如下: 免单统计 题目描述 某商城举办了一个促销活动,如果某顾客是某一秒内第一个下单的顾客(可能是多个人),则可以 获取免单.请你编程计算有多少顾客可以获 ...
- 华为机试python编程题_牛客网华为机试题之Python解法
牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...
最新文章
- python刷题笔记怎么改_python面试题刷题笔记1 - 10
- python拆堆和堆叠的操作_堆叠框架的Python / Tkinter退出按钮
- docker与VM虚拟机区别
- 计算机技术在工程的应用浅论,《计算机技术在计算机应用技术中的应用浅论》...
- 信息学奥赛一本通 2043:【例5.11】杨辉三角形
- Unix Tutorial Four
- [2019.1.2]BZOJ2115 [Wc2011] Xor
- Qml文件的两种加载方式
- Ubuntu 下 MySQL 数据自执行备份
- 入门选手都能了解的聚类算法之二(DBSCAN)
- 两场直播丨易鲸捷分布式数据库的并发控制 、PostgreSQL日常工作分享
- 前端实现动画的方法总结
- 计算机硬盘从桌面消失了,如何解决win10硬盘分区不见了_win10机械硬盘突然消失解决方法...
- 错题集:Censored!
- visio2016安装遇到的坑
- Gensim官方教程翻译(二)——语料库与向量空间(Corpora and Vector Spaces)
- 单调递增最长子序列 拦截导弹(nyoj 17 nyoj 79)
- 不思议迷宫量子计算机,不思议迷宫男巫刷法及男巫的猫形态详解
- 面试中可以用到的高级技巧
- 如何搭建一个拥有个人域名又带点Geek味的独立博客