冲刺阶段的首篇题解!

题目链接: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的更多相关文章

  1. [USACO09DEC]视频游戏的麻烦Video Game Troubles(DP)

    https://www.luogu.org/problem/P2967 https://ac.nowcoder.com/acm/contest/1077/B 题目描述 Farmer John's co ...

  2. LG_2967_[USACO09DEC]视频游戏的麻烦Video Game Troubles

    题目描述 Farmer John's cows love their video games! FJ noticed that after playing these games that his c ...

  3. <USACO09DEC>视频游戏的麻烦Video Game Troublesの思路

    emm今天模拟赛的题.神奇地A了 #include<cstdio> #include<cstring> #include<iostream> #include< ...

  4. [Luogu2967] 视频游戏的麻烦Video Game Troubles

      农夫约翰的奶牛们游戏成瘾!本来约翰是想要按照调教兽的做法拿她们去电击戒瘾的,可是 后来他发现奶牛们玩游戏之后比原先产更多的奶.很明显,这是因为满足的牛会产更多的奶. 但是,奶牛们在哪个才是最好的游 ...

  5. 【USACO12JAN】视频游戏的连击Video Game Combos

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

  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. [USACO12JAN]视频游戏的连击Video Game Combos(AC自动机+DP)

    Description 贝西正在打格斗游戏.游戏里只有三个按键,分别是“A”.“B”和“C”.游戏中有 N 种连击 模式,第 i 种连击模式以字符串 Si 表示,只要贝西的按键中出现了这个字符串,就算 ...

  8. [Luogu3041][USACO12JAN]视频游戏的连击Video Game Combos

    题面 sol 设\(f_{i,j}\)表示填了前\(i\)个字母,在\(AC\)自动机上跑到了节点\(j\)的最大得分.因为匹配需要暴跳\(fail\)所以预先把\(fail\)指针上面的匹配数传下来 ...

  9. 洛谷P3041 视频游戏的连击Video Game Combos [USACO12JAN] AC自动机+dp

    正解:AC自动机+dp 解题报告: 传送门! 算是个比较套路的AC自动机+dp趴,,, 显然就普普通通地设状态,普普通通地转移,大概就f[i][j]:长度为i匹配到j 唯一注意的是,要加上所有子串的贡 ...

随机推荐

  1. 无法安装R程序包

    如题,使用insatll.packages("cluster")安装包时,会出现如下错误提示. Warning: unable to access index for reposi ...

  2. B - Common Divisors (codeforces)数论算法基本定理,唯一分解定理模板

    You are given an array aa consisting of nn integers. Your task is to say the number of such positive ...

  3. ElasticSearch的9200和9300端口的区别

    9200用于外部通讯,基于http协议,程序与es的通信使用9200端口. 9300jar之间就是通过tcp协议通信,遵循tcp协议,es集群中的节点之间也通过9300端口进行通信.

  4. JDBC(一)

    1.   JDBC介绍 JDBC(Java DataBase Connectivity),即Java数据库的连接.JDBC是一种用于执行SQL语句(DML,DDL,DQL)的Java API,可以为多 ...

  5. 14)载入png图片

    1)之前在窗口中载入图片  一般都是bmp的  但是  我想从网上下一些图片,这些图片可能是png的 2)那么就有了下面的操作 3)png图片可以直接做成透明的. 4)首先是创建窗口的基本代码: #i ...

  6. UML-如何画操作契约?

    1.在编写契约过程中,发现之前的领域模型不对,此时是否需要修改? 需要修改.包括:概念类.属性.关联.这就是不断迭代和进化 2.用例中复杂场景里的状态变化细节,描述过多导致用例臃肿,让人看不下去,因此 ...

  7. 图论模型--dijstra算法和floyd算法

    matlab代码实现:https://blog.csdn.net/weixin_40108753/article/details/81237585 python代码实现:

  8. cassandra 系统分析 架构

    cassandra cassandra是无中心节点的列式数据库 集群管理:      使用gossip算法,最终每个节点都知道集群中的所有节点信息,新增一个节点,新节点发送上线消息,     其他节点 ...

  9. leetcode腾讯精选练习之除自身以外数组的乘积(十)

    最长公共前缀 题目 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. ...

  10. 文献管理器endnote学习笔记

    目录 文献管理器endnote学习笔记 一.文献信息输入(将文献信息添加到文献管理软件endnote的多种方法) 1.在线检索(方便快捷,但有些网站无法直接检索) 2.网站输出(所有网站都支持的方式, ...