P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles
冲刺阶段的首篇题解!
题目链接:P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles;
题目概述:
总共N个游戏平台,金额上限V元,给出每个游戏平台的价钱和其上游戏数量;
每个游戏有一个花费及愉悦值,求在花费不超上限的情况下,最大的愉悦值。
(1 <= N <= 50)
(1 <= V <= 100,000)
每个游戏平台价格(1 <= P_i <= 1000)
每个平台游戏数量(1 <= G_i <= 10)
每个游戏价格(1 <= GP_j price <= 100)
游戏带来的愉悦值 (1 <= PV_j <= 1,000,000)
解析:
最开始想到方程为dp[i][j]={dp[i-1][j-x],dp[i-1][j]};
表示第i个平台花j元的最大愉悦值。
由于每次dp[i][j]求解都只会和它前一层也就是dp[i-1]一层有关系,所以很明显,可以采用滚动数组优化。
但是数组是什么含义,需要斟酌一下,我选择去掉表示游戏平台的i,剩下dp[i]表示当前花费为i的最大愉悦值。
但是我们发现,对于第i个平台,要么不取,要么取(废话)。
而每个平台在求解的过程中会干扰前边求过的最优值。
所以就可以分出一个数组用于求当前平台一定取的最优值,而另一个就代表全局的最优值。
code:
#include<bits/stdc++.h>
using namespace std;
const int MAXV =1e6+;
int n,V,dp[MAXV];//表示价钱为i时的最高产奶量;
int dp2[MAXV];//表示第当前游戏平台一定取并价钱为i时的最高产奶量
int main()
{
cin>>n>>V;
for(int i=;i<=V;i++)dp[i]=;//表示价钱为i时的最高产奶量
for(int i=;i<=n;i++){//处理到第i个游戏平台
int temp,k;
cin>>temp>>k;
for(int c=temp;c<=V;c++)dp2[c]=dp[c-temp];//初始化成第i个平台当前只取了游戏主机的价钱
for(int j=;j<=k;j++){
int p,v;
cin>>p>>v;
for(int c=V-p;c>=temp;c--)
if(dp2[c+p]<dp2[c]+v)dp2[c+p]=dp2[c]+v;
}
for(int c=temp;c<=V;c++)
if(dp[c]<dp2[c])dp[c]=dp2[c];
}
cout<<dp[V];
return ;
}
加油!
P2967 [USACO09DEC]视频游戏的麻烦Video Game Troubles的更多相关文章
- [USACO09DEC]视频游戏的麻烦Video Game Troubles(DP)
https://www.luogu.org/problem/P2967 https://ac.nowcoder.com/acm/contest/1077/B 题目描述 Farmer John's co ...
- LG_2967_[USACO09DEC]视频游戏的麻烦Video Game Troubles
题目描述 Farmer John's cows love their video games! FJ noticed that after playing these games that his c ...
- <USACO09DEC>视频游戏的麻烦Video Game Troublesの思路
emm今天模拟赛的题.神奇地A了 #include<cstdio> #include<cstring> #include<iostream> #include< ...
- [Luogu2967] 视频游戏的麻烦Video Game Troubles
农夫约翰的奶牛们游戏成瘾!本来约翰是想要按照调教兽的做法拿她们去电击戒瘾的,可是 后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是因为满足的牛会产更多的奶. 但是,奶牛们在哪个才是最好的游 ...
- 【USACO12JAN】视频游戏的连击Video Game Combos
题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the only v ...
- [洛谷3041]视频游戏的连击Video Game Combos
题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the only v ...
- [USACO12JAN]视频游戏的连击Video Game Combos(AC自动机+DP)
Description 贝西正在打格斗游戏.游戏里只有三个按键,分别是“A”.“B”和“C”.游戏中有 N 种连击 模式,第 i 种连击模式以字符串 Si 表示,只要贝西的按键中出现了这个字符串,就算 ...
- [Luogu3041][USACO12JAN]视频游戏的连击Video Game Combos
题面 sol 设\(f_{i,j}\)表示填了前\(i\)个字母,在\(AC\)自动机上跑到了节点\(j\)的最大得分.因为匹配需要暴跳\(fail\)所以预先把\(fail\)指针上面的匹配数传下来 ...
- 洛谷P3041 视频游戏的连击Video Game Combos [USACO12JAN] AC自动机+dp
正解:AC自动机+dp 解题报告: 传送门! 算是个比较套路的AC自动机+dp趴,,, 显然就普普通通地设状态,普普通通地转移,大概就f[i][j]:长度为i匹配到j 唯一注意的是,要加上所有子串的贡 ...
随机推荐
- C# 串口编程,扫码枪使用
一.串口通信简介 串行接口(串口)是一种可以将接受来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接受的串行数据流转换为并行的数据字符供给CPU的器件.一般完成这种功能的电路,我们称为 ...
- Miller_Rabin素性测试
1. 为什么需要素性测试? 我们其实已经知道有一些判断素数的方法,比如: 遍历测试:待测试数n与2,3,...√n做除法判断余数是否为零,如果没有任何一个数可以整除n,则说明n为素数 Wilson定理 ...
- Tensorflow函数——tf.set_random_seed(seed)
设置图级随机seed. 依赖于随机seed的操作实际上从两个seed中获取:图级和操作级seed. 这将设置图级别的seed. 其与操作级seed的相互作用如下: 1.如果没有设置图形级别和操作see ...
- BSC软件交流-BS
管理体系的提升公司.部门 关键指标 体系EXCEL记录的方式 较老,不够系统化BSC模式 测评.咨询.绩效软件目标地图 ,任务 目标 分解 平台?手机端? 集成 钉钉? paas平台?基础数据的获取团 ...
- 201403-1 相反数 Java
法1:排序后,首尾两个指针 法2:每个数的绝对值如果出现过,flag置为1,如果再次出现,就计数+1 本文采用法1 import java.util.Arrays; import java.util. ...
- 吴裕雄--天生自然 PYTHON3开发学习:运算符
#!/usr/bin/python3 a = 21 b = 10 c = 0 c = a + b print ("1 - c 的值为:", c) c = a - b print ( ...
- Spring Cloud服务间调用鉴权
学习使用Spring Cloud 微服务间的调用都是RestFul风格,如何保证调用之间的安全性,这是一个很重要的问题. 通过查阅资料http://wiselyman.iteye.com/blog/2 ...
- windows server 2012 安装sql server集群
第一步:准备工作 虚拟环境下模拟创建: 准备好3台虚拟机 操作系统,WindowsServer2012R2 操作系统安装完成后,需要注意如果虚拟机是克隆出来的,后面操作集群的时候需要计算机的sid不同 ...
- Office文档WEB端在线浏览(转换成Html)
最近在做了一个项目,要求是对Office文档在线预览.下面给大家分享一下我的方法. 1.第一种方法(不建议使用)我是在网上搜了一个利用COM组件对office文档进行转换,但是此方法必须要装Offic ...
- 输入一段汉字可以获得首字母简拼的java代码
package com.zl; import java.io.UnsupportedEncodingException; public class Test12 { public static voi ...