问题描述

约翰的奶牛们玩游戏成瘾!本来约翰是想把她们拖去电击治疗的,后来他发现奶牛们在生产了更多的牛奶,也就开始支持她们了。

但是,奶牛在选择游戏平台上的分歧很大:有的奶牛想买一台 Xbox 360来跑《光晕 3》;有的奶牛想要一台任天堂Wii来跑《明星大乱斗X》; 还有的奶牛想要在PlayStation 3 上玩《潜龙谍影4》。看来约翰要做一些选择才行。

已知市面上有N种平台,如果想玩第i种平台的游戏,必须先买一台该平台上的游戏机,价格为Pi。第i种平台上有Gi种游戏,其中第j个游戏的价格为GPi,j,奶牛玩过该游戏后的牛奶产出为PVi,j.如果想玩同一平台上的多个游戏,只要买一台游戏机就够了。

假设约翰的总预算不能超过V。请帮他考虑一下,购买哪些游戏机和游戏,才能使奶牛产奶的效益最大?注意一个游戏玩两次是不会有双倍效益产生的。

输入格式

第一行:两个用空格分开的整数N和V,1 ≤ N ≤ 50,1 ≤ V ≤ 106

第二行到第N + 1行:第i + 1行描述了第i个游戏平台。首先是Pi。接着是Gi,其次有Gi对整数GPi,j和PVi,j,1 ≤ Pi ≤ 1000,1 ≤ Gi ≤ 10,1 ≤ GPi,j ≤ 100,1 ≤ PVi,j ≤ 106

输出格式

第一行:单个整数,表示约翰可以得到的最高产出

样例输入

3 800
300 2 30 50 25 80
600 1 50 130
400 3 40 70 30 40 35 60

样例输出

210

提示

购买第一种游戏机上的第二个游戏和第三种游戏机上的第一、第三个游戏,预算为300 + 25 + 400 + 40 + 35 = 800,收益为80 + 70 + 60 = 210

题解

设f[j][0/1] 表示前i个游戏平台价格不超过j元的最大效益,由于要买游戏机,第i个游戏平台实际可以用的钱为j-p[i],然后就直接用01背包的模板了。

有可能不买第i个游戏平台的游戏机和所有游戏可以获得更大的效益,f[j][0]存储前i-1个游戏平台的最大收益,即不买第i个游戏平台的最大收益,f[j][1]用来推前i个游戏平台的最大收益,最后前i个游戏平台的最大收益为max(f[j][0],f[j][1])

 1 #include <cstdio>
 2 int n,m,p[55],g[55],w[55][15],v[55][15],f[1000005][2];
 3 int max(int x,int y)
 4 {
 5     return x>y?x:y;
 6  }
 7 int main()
 8 {
 9     int i,j,k;
10     scanf("%d%d",&n,&m);
11     for (i=1;i<=n;i++)
12     {
13         scanf("%d%d",&p[i],&g[i]);
14         for (j=1;j<=g[i];j++)
15           scanf("%d%d",&w[i][j],&v[i][j]);
16     }
17     for (i=1;i<=n;i++)
18     {
19         for (j=p[i];j<=m;j++)
20           f[j][1]=f[j-p[i]][0];
21         for (j=1;j<=g[i];j++)
22           for (k=m-w[i][j];k>=p[i];k--)
23             f[k+w[i][j]][1]=max(f[k+w[i][j]][1],f[k][1]+v[i][j]);
24         for (j=p[i];j<=m;j++)
25           f[j][0]=max(f[j][0],f[j][1]);
26     }
27     printf("%d",f[m][0]);
28     return 0;
29 }

转载于:https://www.cnblogs.com/rabbit1103/p/9881145.html

【洛谷P2967】【USACO 2009 Dec】电子游戏 Video Game Troubles相关推荐

  1. [USACO 2009 Dec G]Video Game Troubles-----分组背包的改良版

    这题是分组背包的改良版,如果还按分组背包的思路枚举每组物品状态会TLE 因此需要换一种思考方式 类似于状态机模型 状态表示 f[i]表示前i-1里任意选,但是选第i个物品的最大价值 g[i]表示前i个 ...

  2. F. [usaco 2009 dec]游荡的奶牛 总结

    F. [usaco 2009 dec]游荡的奶牛 总结 题目 F. [usaco 2009 dec]游荡的奶牛 时间限制:1s 空间限制:256MB 输入文件:sgraze-in 输出文件:sgraz ...

  3. 洛谷 P3041 视频游戏的连击Video Game Combos(AC自动机+拓扑排序+数位DP)

    洛谷 P3041 视频游戏的连击Video Game Combos 难度一般,不过这个数位DP其实应该叫做记忆化搜索 题意:玩游戏时可以通过按键组合打出combo技能:然后是已知N个combo的按键方 ...

  4. [USACO 2009 Dec S]Music Notes

    题目: [USACO 2009 Dec S]Music Notes ,哈哈,我们今天来看一道有二分思想的题嘛,这是选自USACO上的一道题,好了,我们一起来看看题意吧: 题目描述是复制的,可能有部分显 ...

  5. 洛谷P1474 [USACO 2.3]货币系统 Money Systems [2017年4月计划 动态规划04]

    P1474 货币系统 Money Systems 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1 ...

  6. [洛谷3041]视频游戏的连击Video Game Combos

    题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the only v ...

  7. USACO 2009 Dec cow toll paths 过路费-floyd

    这道题首先要明确一点,那就是当你从一个点走到自己时,也是需要花费这个点点权值的费用.这个点卡了我两次QWQ 然后我比较喜欢分两步搞: 首先,我们利用floyd的一个性质:就是在更新其他点之间的路线时要 ...

  8. [usaco 2009 dec]游荡的奶牛

    游荡的奶牛 题目描述 FJ 有 N (1 <= N <= 50,000)头牛,FJ的草地可以认为是一条直线. 每只牛只喜欢在某个特定的范围内吃草.第i头牛喜欢在区间(S_i, E_i)吃草 ...

  9. 洛谷5197 USACO Grass Planting

    思维题-其实可以很容易想到要覆盖,类似于大星星覆盖小的,所以入度最多的点的入度+1就是答案 #include <iostream> #define MAXN 500005 using na ...

最新文章

  1. 自定义MyHttpServletRequest解决过滤器拦截@RequestBody整体JSON请求问题
  2. python【力扣LeetCode算法题库】999-车的可用捕获量(DFS)
  3. JavaScript(数据类型、字符串操作)
  4. 求给定数组子数组中最接近0的和
  5. sqlserver还原差异备份
  6. OllyDBG 入门之四--破解常用断点设
  7. Sigma Function(LightOJ-1336)
  8. 用简单直白的方式讲解A星寻路算法原理
  9. 【c语言大作业】c语言编写贪吃蛇
  10. ndows优化大师 免费版,Windows7优化大师
  11. 进销存系统的成本核算方法一览
  12. div+css静态网页设计——男女装商城-功能齐全(40页) HTML+CSS+JavaScript 大学生网店作品 商城网页设计作业模板 学生网页制作源代码下载
  13. 7-4 哈夫曼编码 (30分)
  14. Python如何释放内存
  15. 盘点≠走过场,哪些功能可以进行高效库存盘点?
  16. 写一个函数,输入一个年份,判断是不是闰年
  17. 2.Matlab图像坐标变换
  18. 数字签名、证书,RSA加密、解密
  19. 字节Scala面试题(2) --- 伴生对象
  20. 网络广播mms直播地址

热门文章

  1. UI设计到底是什么:什么叫ui设计?
  2. 网络基础知识汇总学习
  3. Docker入门教程 Part 1 基础概念 - 镜像、容器、仓库
  4. android官方模拟器下载安装,网易MuMu模拟器
  5. js 不用onload的loding
  6. Spring MVC集成Swagger2.0
  7. MySQL-存储IP地址一文解决(随便问~)
  8. 005-Sencha Cmd 5升级指南
  9. 基于深度学习的新闻摘要生成算法实现与详解(Encoder-Decoder框架模型)
  10. error: Package requirements (sqlite3 > 3.7.4) were not met: