[bzoj1775][Usaco2009 Dec]Vidgame 电视游戏问题_背包dp
1775: [Usaco2009 Dec]Vidgame 电视游戏问题
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1775
题解:
发现是个$zz$分组背包。
但是,正常的分组背包是,完全背包+01背包,在这里根本行不通因为数据范围。
故此我们考虑背包$dp$。
状态:$f_{(i,j)}$表示前$i$组,$i$选,花费$j$的最大价值;$g_{(i,j)}$表示$i$不选。
因为空间开的下,所以我们可以把$i$也放进去。
不然$i$是可以滚掉的。
代码:
#include <bits/stdc++.h>
using namespace std;
int f[51][100001], g[51][100001];
char *p1, *p2, buf[100000];
#define nc() (p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 100000, stdin), p1 == p2) ? EOF : *p1 ++ )
int rd() {
int x = 0;
char c = nc();
while (c < 48) {
c = nc();
}
while (c > 47) {
x = (((x << 2) + x) << 1) + (c ^ 48), c = nc();
}
return x;
}
int main() {
int n, m;
n = rd(), m = rd();
memset(f, 0x80, sizeof f);
memset(g, 0x80, sizeof g);
for (int i = 0; i <= m; i ++ ) {
f[0][i] = g[0][i] = 0;
}
for (int i = 1; i <= n; i ++ ) {
int p = rd(), c = rd();
for (int j = 0; j <= m; j ++ ) {
f[i][j] = max(f[i - 1][j], g[i - 1][j]);
if (j >= p) {
g[i][j] = max(f[i - 1][j - p], g[i - 1][j - p]);
}
}
while (c -- ) {
int v = rd(), w = rd();
for (int j = m; j >= v; j -- ) {
g[i][j] = max(g[i][j], g[i][j - v] + w);
}
}
}
cout << max(f[n][m], g[n][m]) << endl ;
return 0;
}
小结:如果常规地维护一个答案数组并不好维护,我们可以考虑把每个时刻的数组都维护出来。
[bzoj1775][Usaco2009 Dec]Vidgame 电视游戏问题_背包dp的更多相关文章
- BZOJ1775: [Usaco2009 Dec]Vidgame 电视游戏问题
n<=50个游戏机有花费,每个游戏机有Gi<=10种游戏,每种游戏有花费有收益,买了游戏机才能玩对应游戏,求最大收益. 这就是一个背包!不过有依存关系,就不会了! 方法一:f[i][j]表 ...
- 【bzoj1775】[Usaco2009 Dec]Vidgame 电视游戏问题 dp
题目描述 输入 * 第1行: 两个由空格隔开的整数: N和V * 第2到第N+1行: 第i+1行表示第i种游戏平台的价格和可以在这种游戏平台上面运行的游 戏.包含: P_i, G_i还有G_i对由空格 ...
- 【P1915】[usaco09 dec gold]电视游戏问题
在百度上搜到了nzx学长的题解orz 原题: 农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶叫兽的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是因为满足的牛会产更 ...
- [bzoj1606][Usaco2008 Dec]Hay For Sale 购买干草_动态规划_背包dp
Hay For Sale 购买干草 bzoj-1606 Usaco-2008 Dec 题目大意:约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单 ...
- 【bzoj1606】[Usaco2008 Dec]Hay For Sale 购买干草 背包dp
题目描述 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包干草,每一包都有它的体 ...
- BZOJ1025 [SCOI2009]游戏 【置换群 + 背包dp】
题目链接 BZOJ1025 题解 题意就是问一个\(1....n\)的排列在同一个置换不断重复下回到\(1...n\)可能需要的次数的个数 和置换群也没太大关系 我们只需知道同一个置换不断重复,实际上 ...
- [luogu1156]垃圾陷阱_动态规划_背包dp
垃圾陷阱 luogu-1156 题目大意:Holsteins在距离地面D英尺的地方,FJ间隔时间ti会往下扔第i个垃圾.Holsteins对待每一个垃圾都会选择吃掉或者垫高.Holsteins有10个 ...
- [bzoj1708][Usaco2007 Oct]Money奶牛的硬币_动态规划_背包dp
Money奶牛的硬币 bzoj-1708 Usaco-2007 Oct 题目大意:在创立了她们自己的政权之后,奶牛们决定推广新的货币系统.在强烈的叛逆心理的驱使下,她们准备使用奇怪的面值.在传统的货币 ...
- [bzoj2748][HAOI2012]音量调节_动态规划_背包dp
音量调节 bzoj-2748 HAOI-2012 题目大意:有一个初值,给你n个$\delta$值,求最后不超过给定的限制的情况下的改变的最大值.每个$\delta$值可以+也可以-. 注释:$1\l ...
随机推荐
- Unable to copy file, Access to the path is denied
Unable to copy file, Access to the path is denied http://stackoverflow.com/questions/7130136/unable- ...
- luogu 2982 [USACO10FEB]慢下来Slowing down dfs序+树状数组
将要查询的信息放到 dfs 序上并用树状数组查一个前缀和即可. #include <bits/stdc++.h> #define N 100004 #define setIO(s) fre ...
- 在 CentOS 7 上安装 RabbitMQ
RabbitMQ 服务器在安装之前需要安装 erlang. 最新版本的 RabbitMQ 3.8.0 需要 Erlang 21.3 以上的版本支持. 在这里,我们需要在你的 CentOS 中安装 Er ...
- poj1737
Connected Graph POJ - 1737 An undirected graph is a set V of vertices and a set of E∈{V*V} edges.An ...
- jquery转换js
刚离职,一直忙于弄简历,整理面试题.今天得空吧前几天学习复习的jq基础知识整理一下,长时间不用还真的忘记了.所有在深入学习中也不要忘记复习之前的知识.做巩固,老话说的好打好根基才能盖好房.基础知识过后 ...
- Java图片裁剪
public static void main(String[] args) throws IOException { String path = "C:/Users/yang/Deskto ...
- 2018-2019-2 20165330《网络对抗技术》Exp10 Final 基于PowerShell的渗透实践
目录 实验内容 实验步骤 实验中遇到的问题 实验总结与体会 实验内容 PoweShell简介 PowerShell入门学习 PowerShell渗透工具介绍 相关渗透实践分析 ms15-034之Pow ...
- Java通过过滤器修改header
特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...
- python中的break continue用法
Break break跳出循环,并且终止最小封闭循环. Continue continue跳过本次循环,继续执行下一次的循环. 二者区别就是break会终止循环,continue不终止循环.
- 解决Linux下Firefox无法启动的问题
在linux下使用Firefox连接被测系统的GUI,一次偶然操作导致linux系统运行缓慢,Firefox无法正常操作,从system monitor 杀掉所有java进程将Firefox强行关闭. ...