题目描述

翰的奶牛玩游戏成瘾!本来约翰是想把她们拖去电击治疗的,但是他发现奶牛们在玩游戏后生产
了更多的牛奶,也就支持它们了。
但是,奶牛在选择游戏平台上的分歧很大:有些奶牛想买 Xbox 360 来跑《光晕 3》;有的奶牛想
要任天堂 Wii 来跑《明星大乱斗 X》;还有奶牛想要在 PlayStation 3 上玩《潜龙谍影 4》。约翰只有
V 元钱,不够多,要做一些取舍才行。
已知市面上有 K 种游戏平台,如果想玩第 i 种平台的游戏,必须先买一台该平台的游戏机,价
格为 C i 。第 i 种平台上有 S i 种游戏,其中第 j 个游戏的价格为 P i,j ,奶牛玩过这个游戏后的产出为
E i,j 。如果想玩同一平台上的多个游戏,只要买一台游戏机就够了。请帮助约翰选择买哪些游戏机和
游戏,才能使奶牛的产奶效益之和最大?注意同一个游戏买两次是不会产生双倍效益产生的。

输入

• 第一行:两个整数 K 和 V ,1 ≤ K ≤ 50,1 ≤ V ≤ 10 6
• 第二行到第 K + 1 行:第 i + 1 行首先有两个整数 C i 和 S i ,1 ≤ C i ≤ 10 6 ,1 ≤ S i ≤ 10,其次
有 S i 对整数 P i,j 和 E i,j ,1 ≤ P i,j ≤ 10 6 ,1 ≤ E i,j ≤ 10 6

输出

• 单个整数:表示可以得到的最大产出之和

样例输入

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[i][j]为前i个平台花j元的最大产出
我们假设买了该平台,设nd为买该平台的钱 那么F[i][j]=F[i-1][j-nd] 先转移过来
然后再用所有的游戏进行01背包 然后枚举需要限制.
背包完之后拿F[i][j]和F[i][j-1]比较,表示选不选该平台
 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,MAXN=;
int F[N][MAXN];
int gi(){
int str=;char ch=getchar();
while(ch>''||ch<'')ch=getchar();
while(ch>='' && ch<='')str=str*+ch-,ch=getchar();
return str;
}
int main()
{
int n=gi(),m=gi(),nd,num=,x,y;
for(int i=;i<=n;i++)
{
nd=gi();num=gi();
for(int j=nd;j<=m;j++)F[i][j]=F[i-][j-nd];
for(int j=;j<=num;j++)
{
x=gi();y=gi();
for(int k=m;k>=x+nd;k--)
{
F[i][k]=max(F[i][k-x]+y,F[i][k]);
}
}
for(int j=;j<=m;j++)F[i][j]=max(F[i][j],F[i-][j]);
}
printf("%d",F[n][m]);
return ;
}
 

【USACO】电子游戏 有条件的背包的更多相关文章

  1. USACO Money Systems Dp 01背包

    一道经典的Dp..01背包 定义dp[i] 为需要构造的数字为i 的所有方法数 一开始的时候是这么想的 for(i = 1; i <= N; ++i){ for(j = 1; j <= V ...

  2. USACO Subset 整数划分01背包

    又是去理解了一次01背包. 这道题目的意思就是给你一个N (N < 40)表示有一个集合{1,2,3,... n} 你要将它划分成相等的两个子集合,求有几种划分方式 如果N是奇数,那么显然不能由 ...

  3. USACO 完结的一些感想

    其实日期没有那么近啦……只是我偶尔还点进去造成的,导致我没有每一章刷完的纪念日了 但是全刷完是今天啦 讲真,题很锻炼思维能力,USACO保持着一贯猎奇的题目描述,以及尽量不用高级算法就完成的题解……例 ...

  4. hdoj--2955--Robberies(背包好题)

    Robberies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. dp式子100个……

    1.        资源问题1-----机器分配问题F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2------01背包问题F[I,j]:=max(f[i- ...

  6. dp方程

    1.        资源问题1 -----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2 ------01背包问题   F[I,j]:=ma ...

  7. CSP2019: Lost and Found

    再不更就成鸽子了= = Day -INF to Day 0 不记得发生了什么 Day 1 今年HN用网上提交的方式收题?再也不怕因为交代码太晚增加省队名额了 开考看了一眼T1好像是模拟题,特地注意了\ ...

  8. 浅析拯救小矮人的 nlogn 算法及其证明

    浅析拯救小矮人的 nlogn 算法及其证明 题型简介: 有 $ n $ 个人,第 $ i $ 个人身高 $ a_i $ 手长 $ b_i $ ,他们为了从一个高为 $ H $ 的洞中出去,决定搭人梯. ...

  9. (容量超大)or(容量及价值)超大背包问题 ( 折半枚举 || 改变 dp 意义 )

    题意 : 以下两个问题的物品都只能取有且只有一次 ① 给你 N 个物品,所有物品的价值总和不会超过 5000, 单个物品的价格就可达 10^10 ,背包容量为 B ② 给你 N (N ≤ 40 ) 个 ...

随机推荐

  1. 敏捷开发每日报告--day5

    1 团队介绍 团队组成: PM:齐爽爽(258) 小组成员:马帅(248),何健(267),蔡凯峰(285)  Git链接:https://github.com/WHUSE2017/C-team 2 ...

  2. Python 3.* print 出现SyntaxError: invalid syntax

    很简单,不知道为啥,据说是3.0以后的print都改为了print(); 例如 a=1 print a 上边出错 输入 a=1 print(a) 就正确了

  3. nodeJS基于smtp发邮件

    邮件的协议smtp是tcp/ip族中的一个协议,所以我们这次考虑使用net模块来发送邮件. const net = require('net') const assert = require('ass ...

  4. @SpringBootApplication 组合注解包含哪些注解及作用

    序:在学习springboot,教程一般对一些注解语焉不详,发现@SpringBootApplication 这个注解包含了很多注解,也就是说使用这个注解可以少写几个注解,这里看源码粘出来一些,仅用于 ...

  5. 算法题丨Two Sum

    描述 Given an array of integers, return indices of the two numbers such that they add up to a specific ...

  6. Sphinx主索引和增量索引来实现索引实时更新的关键步骤

    1.配置csft.conf文件 vim /etc/csft.conf # # Minimal Sphinx configuration sample (clean, simple, functiona ...

  7. Linux知识积累 (9) 创建用户、分配权限和更改所有者

    一.useradd和adduser 1.useradd命令: 用于Linux中创建的新的系统用户. useradd可用来建立用户帐号.帐号建好之后,再用passwd设定帐号的密码. 而可用userde ...

  8. SpringCloud的部署模型

    http://www.th7.cn/Program/java/201608/919853.shtml

  9. 版本名称GA的含义:SNAPSHOT->alpha->beta->release->GA

    SNAPSHOT->alpha->beta->release->GA ----------------------------------------------------- ...

  10. SQL Server数据库优化的10多种方法

    巧妙优化sql server数据库的几种方法,在实际操作中导致查询速度慢的原因有很多,其中最为常见有以下的几种:没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷). I/O吞吐量小, ...