牛客网 TaoTao要吃鸡 ( 0/1背包变形 )
题意 : 题目链接
分析 :
如果没有 BUG (即 h == 0 的时候)就是一个普通的 0 / 1 背包
需要讨论一下 h != 0 的情况
此时有就相当于有物品是有特权的
而且背包装有特权的物品根据题目的要求是应当最后装的
也就是说特权物品装完之后背包将不再可装
所以特权物品肯定是只有一个的
数据量并不大,所以可以去枚举这个特权物品
那么如何知道在 没有装特权物品 之前的最佳选择方案?
答案就是用最小的可剩空间留给特权物品,然后其他空间去跑 0/1 背包
最小的可剩空间当然就是 h + m - 1,只留一个单位空间给特权物品即可
最后除了枚举的物品,其他的物品去跑背包容量为 h + m - 1 的 0/1 背包
#include<bits/stdc++.h> using namespace std; ; ]; int C, n, m, h; int main(void) { while(~scanf("%d", &n) && n){ scanf("%d %d", &m, &h), C = m + h; ; i<=n; i++) scanf("%d %d", &w[i], &v[i]); ; memset(dp, , sizeof(dp)); ; i<=n; i++) for(int j=C; j>=w[i]; j--) dp[j] = max(dp[j], dp[j-w[i]] + v[i]); ans = dp[C]; ){///有 BUG 存在 ; k<=n; k++){///枚举特权物品 memset(dp, , sizeof(dp));///记得初始化 ; i<=n; i++){ if(i == k) continue;///特权物品不在 0/1 背包过程中 ; j>=w[i]; j--){ dp[j] = max(dp[j], dp[j-w[i]] + v[i]); } } ans = max(ans, dp[C-] + v[k]);///最后维护最优值 } } printf("%d\n", ans); } ; }
牛客网 TaoTao要吃鸡 ( 0/1背包变形 )的更多相关文章
- 2018年全国多校算法寒假训练营练习比赛(第二场) B TaoTao要吃鸡 01背包变形题
链接:https://www.nowcoder.com/acm/contest/74/B来源:牛客网 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求生一样,游 ...
- 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡
链接:https://www.nowcoder.com/acm/contest/74/B来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求 ...
- C++版 - HDUoj 2010 3阶的水仙花数 - 牛客网
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C++版 - ...
- 牛客网Java刷题知识点之垃圾回收算法过程、哪些内存需要回收、被标记需要清除对象的自我救赎、对象将根据存活的时间被分为:年轻代、年老代(Old Generation)、永久代、垃圾回收器的分类
不多说,直接上干货! 首先,大家要搞清楚,java里的内存是怎么分配的.详细见 牛客网Java刷题知识点之内存的划分(寄存器.本地方法区.方法区.栈内存和堆内存) 哪些内存需要回收 其实,一般是对堆内 ...
- 算法题16 贪吃的小Q 牛客网 腾讯笔试题
算法题16 贪吃的小Q 牛客网 腾讯笔试题 题目: 链接:https://www.nowcoder.com/questionTerminal/d732267e73ce4918b61d9e3d0ddd9 ...
- 牛客网 --java问答题
http://www.nowcoder.com/ 主要是自己什么都不怎么会.在这里可以学习很多的! 第一天看题自己回答,第二天看牛客网的答案! 1 什么是Java虚拟机?为什么Java被称作是“平台无 ...
- 牛客网《BAT面试算法精品课》学习笔记
目录 牛客网<BAT面试算法精品课>学习笔记 牛客网<BAT面试算法精品课>笔记一:排序 牛客网<BAT面试算法精品课>笔记二:字符串 牛客网<BAT面试算法 ...
- 牛客网第9场多校E(思维求期望)
链接:https://www.nowcoder.com/acm/contest/147/E 来源:牛客网 题目描述 Niuniu likes to play OSU! We simplify the ...
- 牛客网暑期ACM多校训练营(第七场)Bit Compression
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 题目描述 A binary string s of length N = 2n is give ...
随机推荐
- Centos(64位)安装Hbase详细步骤
HBase是一个分布式的.面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”.就像Bigtable利用了Google文件 ...
- javascrpt的string和Boolean类型
string类型用于表示由零或多个16位unicode字符组成字符序列,即 字符串,字符可以由双引号(“)或单引号(‘)表示 tostring()与 string() 语法:str.tostring( ...
- Linux ulimit 命令 限制系统用户对 shell 资源的访问
ulimit命令用来限制系统用户对 shell 资源的访问,常见用法如下: [root@MongoDB ~]# ulimit -a // 查看当前所有的资源限制 [root@MongoDB ~]# u ...
- 小记---------spark组件与其他组件的比较 spark/mapreduce ;spark sql/hive ; spark streaming/storm
Spark与Hadoop的对比 Scala是Spark的主要编程语言,但Spark还支持Java.Python.R作为编程语言 Hadoop的编程语言是Java
- Magic Potion(网络流)
原题链接 2018南京的铜牌题,听说学长他们上来就A了,我这个图论选手也就上手做了做,结果一言难尽...... 发此篇博客希望自己能牢记自己的菜... 本题大意:有n个heros和m个monsters ...
- C++继承中的同名覆盖
1,父子间的冲突是由继承带来的,两个类之间存在了继承的关系,必然的会带来一 些问题,本文要讨论的是父子之间成员变量或成员函数的命名问题: 2,思考: 1,子类中是否可以定义父类中的同名成员? 1,可以 ...
- redis 有序集合
添加 zadd keyword 0 'eric' 0 'zhang' 0 'yun' 查看列表 zrevrange 降序排列 zrevrange keyword 0 -1 增加分数 zincr ...
- 30分钟Maven入门到精通
Maven是近年来最流行的项目构建与管理工具.不仅简化了我们开发过程中对jar包依赖的导入,还对项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等所有构建过程进行了抽象和统一,方便 ...
- Java学习笔记-----eclipse中建立Java项目并成功运行
环境:WIN7 64位 +eclipse 2018 12version 具体方法:https://jingyan.baidu.com/album/9c69d48fefa53113c9024eb3.ht ...
- java gRPC四种服务类型简单示例
一.gRPC 简介 gRPC 是Go实现的:一个高性能,开源,将移动和HTTP/2放在首位通用的RPC框架.使用gRPC可以在客户端调用不同机器上的服务端的方法,而客户端和服务端的开发语言和 运行环境 ...