链接:https://www.nowcoder.com/acm/contest/74/B
来源:牛客网

题目描述

Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了,
和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包
之后可以多携带h(h为0代表没有装备背包)重量的东西。玩了几天
taotao发现了一个BUG,当装备背包之后,如果可携带重量没有满,就
可以拿一个任意重的东西。(解释看样例)有一天taotao空降到了一个
奇怪的岛上,岛上有n件装备,每个装备都有重量Wi和威力值Vi,但taotao
不认识这些装备,所以他来求助你,挑选威力最大的装备,帮助他吃鸡。

输入描述:

本题有多组输入(小于10),当n=0时结束输入。第一行输入n,m,h。n,m,h为整数,并且0<=n,m,h<=100,接下来n行,每行输入第i个物品的物品的重量Wi和威力值Vi。0<=Wi,Vi<=100.

输出描述:

输出最大威力值,每组输出一行。
示例1

输入

3 3 3
2 3
3 2
2 3
0

输出

8

说明

可携带的总重量为6,当拿了前两件装备,此时容量为5/6,还可以再拿第三件物品。

题解

背包$dp$。

这题有个坑点,只有当$h$不为$0$的时候,才有$bug$。

即:$h$为$0$时,直接做$01$背包;$h$不为$0$时,可以枚举哪一个最后放进去,然后去除这个做$01$背包再算答案。

#include <bits/stdc++.h>
using namespace std;const int maxn = 200 + 10;
int n, m, h;
int dp[maxn];
int w[maxn], v[maxn];int main() {while(~scanf("%d", &n)) {if(n == 0) break;scanf("%d%d", &m, &h);memset(dp, -1, sizeof dp);dp[0] = 0;for(int i = 1; i <= n; i ++) {scanf("%d%d", &w[i], &v[i]);if(w[i] == 0) dp[0] += v[i];}int ans = 0;if(h == 0) {for(int i = 1; i <= n; i ++) {if(w[i] == 0) continue;if(v[i] == 0) continue;for(int j = m; j >= w[i]; j --) {if(dp[j - w[i]] == -1) continue;dp[j] = max(dp[j], dp[j - w[i]] + v[i]);}}for(int i = 0; i <= m; i ++) {ans = max(ans, dp[i]);}} else {ans = dp[0];for(int t = 1; t <= n; t ++) {if(w[t] == 0 || v[t] == 0) continue;for(int i = 1; i <= m + h; i ++) {dp[i] = -1;}for(int i = 1; i <= n; i ++) {if(w[i] == 0 || v[i] == 0) continue;if(i == t) continue;for(int j = m + h; j >= w[i]; j --) {if(dp[j - w[i]] == -1) continue;dp[j] = max(dp[j], dp[j - w[i]] + v[i]);}}for(int i = 0; i <= m + h; i ++) {ans = max(ans, dp[i]);}for(int i = 0; i <= m + h - 1; i ++) {if(dp[i] == -1) continue;ans = max(ans, dp[i] + v[t]);}}}printf("%d\n", ans);}return 0;
}

转载于:https://www.cnblogs.com/zufezzt/p/8372340.html

2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡相关推荐

  1. 【题集】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  2. 【题集·待解决】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  3. 2018.1.28 牛客网2018年全国多校算法寒假训练营练习比赛题解

    Pre:DP专场,不得不说出题人脑洞真的大,题目质量真心不错.能将当今比较热门的游戏素材与算法竞赛有机结合,也是肥肠因缺斯汀的呀哈哈哈哈~ 打的最有意思也是最扎心的一场比赛,还是自己菜.DP是需要下慢 ...

  4. 2018年全国多校算法寒假训练营练习比赛(第四场)F:Call to your teacher

    传送门:https://www.nowcoder.net/acm/contest/76/F 题目描述 从实验室出来后,你忽然发现你居然把自己的电脑落在了实验室里,但是实验室的老师已经把大门锁上了.更糟 ...

  5. 2018年全国多校算法寒假训练营练习比赛(第五场)解题报告

    A-逆序数 https://www.nowcoder.com/acm/contest/77/A 题目描述 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆 ...

  6. 牛客网 2018年全国多校算法寒假训练营练习比赛(第二场) H.了断局-递推

    H.了断局 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 链接:https://www.nowcode ...

  7. 2018年全国多校算法寒假训练营练习比赛(第四场)

    地址:点击打开链接 A 石油采集 思路: 二维矩阵四连通图是一个二分图,其实仔细想想就是将相邻的"#"建图,然后在找最大匹配.匈牙利算法即可.也可以dfs,代码如下: 匈牙利: # ...

  8. 牛客网 2018年全国多校算法寒假训练营练习比赛(第四场) 题解

    A-石油采集 题目描述 随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业.如今,在墨西哥湾漂浮的大量石油,吸引了许多商人的目光.这些商人们有一种特殊的飞机,可以一瓢略过整个海 ...

  9. 2018年全国多校算法寒假训练营练习比赛(第五场)题解

    [题目链接] A - 逆序数 经典问题,有很多方法,例如树状数组,线段树,归并排序.分治等.代码不贴了. B - Big Water Problem 单点修改求区间和,树状数组或者线段树都可以. #i ...

最新文章

  1. Django博客系统(博客保存)
  2. Flutter初体验(二)—— 创建第一个Flutter APP
  3. window 2008 32位系统安装oracle 10g数据库,Oracle 10g for Windows 32bit安装图解-数据库专栏,ORACLE...
  4. 正则在开发过程中的妙用
  5. Python内置数据结构及其复杂度
  6. DMLC深盟分布式深度机器学习开源平台解析
  7. mysql 多表联查的效率_Mysql 多表联合查询效率分析
  8. php实现鼠标悬停显示下拉菜单,Html中鼠标悬停显示二级菜单的两种方法
  9. Codeforces Beta Round #1--C题(多边形求最小面积)
  10. 本科不是985\211都会被歧视?
  11. 简单,方便,功能全的php分页类
  12. 4.3.1 jQuery基础(2)
  13. jquery相对定位(包含find的使用 find相当于后代选择器)$(选择器1,选择器2)
  14. 西班牙人:武磊身体无恙 可以出场比赛
  15. php mysql实现删除功能_这个PHP / MySQL删除功能是否安全?
  16. 重磅!阿里云发布业界首本云网络白皮书
  17. Win11桌面便签小工具下载 支持与手机同步的桌面便签工具下载
  18. pcr技术发展史——人类核酸研究的前世今生
  19. Windows系统压缩卷时可压缩空间远小于实际剩余空间解决方法
  20. Postman之脚本介绍( pre-request-script )

热门文章

  1. 数据包skb_buf(SKB才是套接字的缓冲区)
  2. 兼容浏览器_你知道什么是跨浏览器兼容吗?
  3. 使用Pad Designer制作焊盘
  4. 数据库基础 (六)单表查询进阶
  5. Python单元测试框架 unittest详解
  6. 【Android源码】AlertDialog 源码分析
  7. 根据文件属性或权限进行find查找
  8. Java操作Kafka执行不成功
  9. cocospod 安装和使用
  10. Ubuntu 12.04安装NFS server