牛客网 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 ...
随机推荐
- AspNet Core Swagger4.0 生成请求model描述
今天给大家分享 swagger 俩个冷门的小技巧 获取控制器描述 将 IncludeXmlComments 方法第二个参数设置为 true 即可 public static void IncludeX ...
- String StringBuffer StringBuilder区别与联系
java.lang.String.java.lang.StringBuffer.java.lang.StringBuilder都是字符串类型,是Java中用于处理字符串常用的三个类.它们主要有以下区别 ...
- etcd租约机制
新建租约 新建一个过期时间为120s的租约 # etcdctl lease grant lease 018f6d7bb11aba0d granted with TTL(120s) 查看新建的租约信息 ...
- java--编码规范易漏
1:命名规范 类名用大驼峰式 参数变量·函数·成员变量·局部变量 小驼峰式 常亮命名全部大些单词用_隔开 抽象类用Abstract开头·异常类用Excetpion结尾·测试类用Test结尾 *POJO ...
- 在Ueditor的内容区添加一个下拉选框改变事件
<script>html='';html=html+` <select name="" onchange='this.appendChild(document.g ...
- python初始装饰器
python装饰器: 一,函数名的运用. 函数名是一个变量,但他是一个特殊的变量与括号配合可以执⾏行行函数的变量 1.函数名的内存地址 def func(): print("呵呵" ...
- 求x到y的最少计算次数 (BFS)
时间限制:1秒 空间限制:262144K 给定两个-100到100的整数x和y,对x只能进行加1,减1,乘2操作,问最少对x进行几次操作能得到y? 例如:a=3,b=11: 可以通过3*2*2-1,3 ...
- linux相关命令大全......持续更新
启动项目8080端口被占用,然而老久没玩Linux,命令忘光了,杀死进程都不记得了. 决定整理一波吧....... Linux: sudo强制执行,不在root用户下时使用. top 相当于windo ...
- js 带有返回值的 匿名方法
//可以给 permissionField返回'a,b,c'这样的以逗号分隔的字符串 permissionField:(function(){ var arr = []; $("input[ ...
- func_get_args func_num_args 的使用
func_get_args是获取方法中参数的数组,返回的是一个数组,与func_num_args搭配使用: func_num_args一般写在方法中,用于计数 function eeee($a='gg ...