链接: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,还可以再拿第三件物品。

做这套题的时候就已经开始快两个小时了。。。总是忘记时间。
一开始的想法是把每次背的重量标记下来,如果背满输出,背不满遍历一下未标记的重量,找最大价值。但是因为最后还剩十分钟才开始写的这道题,有点细节没来得及考虑,于是匆匆忙忙交了一个不完整的代码果断WA了。
(2rd 补充说明,这个方法有bug,具体看评论回复。弃用)

另一种方法就是暴力,因为数据小,所以让总背包重量为m+h-1,减去一个1代表肯定背不满。那样就可以遍历每一个背包,在遍历当前背包时,此包不背,去背其它包。
这样ans=max(ans,最后得到的最大价值+当前背包的价值)。

题目有句话说:当装备背包之后,如果可携带重量没有满,就
可以拿一个任意重的东西,所以要考虑h为0的时候,即使背不满也不能去拿其它的物品。

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<cmath>
#include<iomanip>
#include<stack>
#include<vector>
#include<map>
#include<queue>
#include<algorithm>
#define max(a,b)   (a>b?a:b)
#define min(a,b)   (a<b?a:b)
#define swap(a,b)  (a=a+b,b=a-b,a=a-b)
#define X (sqrt(5)+1)/2.0  //Wythoff
using namespace std;
typedef long long int LL;
const int MAXL(2*1e2);
const int INF(0x3f3f3f3f);
const int mod(1e9+7);
int dir[4][2]= {{-1,0},{1,0},{0,1},{0,-1}};
int weight[MAXL+50];
int value[MAXL+50];
int dp[MAXL+50];
int main()
{ios_base::sync_with_stdio(false);int n,m,h;while(cin>>n&&n){cin>>m>>h;memset(dp,0,sizeof(dp));for(int i=1; i<=n; i++)cin>>weight[i]>>value[i];if(!h){for(int i=1; i<=n; i++){for(int j=m; j>=weight[i]; j--){dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);}}cout<<dp[m]<<endl;}else{int w=m+h-1;int ans=0;for(int k=1; k<=n; k++){memset(dp,0,sizeof(dp));for(int i=1; i<=n; i++){if(i==k) continue;for(int j=w; j>=weight[i]; j--){dp[j]=max(dp[j],dp[j-weight[i]]+value[i]);}}ans=max(ans,dp[w]+value[k]);}cout<<ans<<endl;}}
}

TaoTao要吃鸡(01背包)相关推荐

  1. 牛客 TaoTao要吃鸡(01背包)

    牛客 TaoTao要吃鸡(01背包): 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 问题描述: Ta ...

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

    链接:https://www.nowcoder.com/acm/contest/74/B 来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地 ...

  3. 牛客-taotao要吃鸡

    题目链接 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包 之后可以多携带h(h为0代表没有装备背包)重量 ...

  4. 牛客每日练习----圆圈​​​​​​​,TaoTao要吃鸡,吐泡泡

    我喜欢给自己压力,必须得定一个很高的目标,逼自己朝着这个目标前进,不管会不会实现,都是一个动力.                                      ----喻言 链接:http ...

  5. 算法竞赛入门经典 每日一题(TaoTao要吃鸡)

    题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包 之后可以多携带h(h为0代表没有装备背包)重量 ...

  6. 一个简单的吃鸡背包编写——1

    好久都没写博客.是时候来更新一篇一直想写的一个demo,前段时间网易出一个荒野行动.听说还是unity做的,所以自己没事做的时候就来写的玩玩.由于是个人开发所以网络端用的是一个Photon View插 ...

  7. 绝地求生服务器延迟高低排序,绝地求生:延迟不可怕,大神教你如何高ping吃鸡!...

    莫愁前路无知己,谁人不识红尘君! 大家好,我就是号称游戏百事通,电竞一条龙,盛名享誉国内外的红尘君,在这里看到我的文章,是不是想想都觉得刺激呢,来吧,让我们分享今天的开心一刻,这里是大家最喜欢的< ...

  8. hiho一下 第六周 Hihocoder #1038 : 01背包

    题目1 : 01背包 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时 ...

  9. 2017百度之星程序设计大赛 - 资格赛【1001 Floyd求最小环 1002 歪解(并查集),1003 完全背包 1004 01背包 1005 打表找规律+卡特兰数】...

    度度熊保护村庄 Accepts: 13 Submissions: 488 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3276 ...

最新文章

  1. [WinError 17] 系统无法将文件移到不同的磁盘驱动器
  2. css 文本属性详细总结
  3. 优化器(AdaGrad,AdaDelta,RmsProp,Adam,Nadam,Nesterovs,Sgd,momentum)
  4. 检索数据_13_从表中查询空值
  5. java实现人脸识别源码【含测试效果图】——Dao层(IBaseDaoUtil)
  6. UVA 10004 - Bicoloring
  7. 快速理解设计模式六大原则
  8. Android单元测试 mock Context,mock静态类的静态方法,测试方法的顺序
  9. go接收文件服务器,请教:html5批量文件上传,服务端go怎么接收多个文件?
  10. map转成url拼接请求参数
  11. mysql 替换全部标内容_Mysql SQL 替换标签内容
  12. linux grep的信息不全,Linux下grep显示前后几行信息方法介绍
  13. python抓包与解包_python 抓包与解包
  14. ps数位板绘画遇到问题总结
  15. github 发布静态页面
  16. c++ protobuf中repeated类型使用——序列化
  17. rem css calc,关于使用rem单位、css函数calc()进行自适应布局
  18. Jett+Spring MVC实现Excel导出
  19. 二极管与或门和三极管非门电路原理
  20. 计算机速成课 第二十四集 冷战和消费主义

热门文章

  1. html怎么做人物背包,背包的制作方法
  2. HTML5canvas万花筒的绘制,HTML5/Canvas万花筒镜像绘制画板应用
  3. FPGA集创赛、研电赛、FPGA创新设计竞赛国奖经验交流分享
  4. Python pandas 操作 csv 修改 2021/8/29
  5. 基于Proteus8.9的8086+8255A
  6. 多个随机变量运算后的均值与方差计算
  7. 百融金服榕树采用高性能ADC、DAC和超大容量固态FLASH
  8. J2ee 模式 Design Patten
  9. 编译opencv出现Could NOT find PythonLibs: Found unsuitable version “3.6.9“, but required is exact version
  10. CGNet: A Light-weight Context Guided Network for Semantic Segmentation