首页 > 其他分享 >luogu P2967 [USACO09DEC] Video Game Troubles G

luogu P2967 [USACO09DEC] Video Game Troubles G

时间:2024-02-02 23:22:10浏览次数:25  
标签:f1 pp 游戏 USACO09DEC luogu Troubles 60 int 主机

CSP RP++

这道题就是一个背包升级的板子,

我不会告诉你,这题我用了半个小时才做完

本题的思路是:

第一步:

先忽略第 $i$ 台主机的价格,只对第 $i$ 款游戏的 $G _ {i}$ 款游戏做01背包,此时得到的 $f[i][j]$ 为从前 $i$ 台主机中花费了 $j$ 元购买游戏得到的伪收益。

第二步:

再考虑第 $i$ 台主机的价格,计算第 $i$ 阶段的真实收益 $f1[i][j]$。对于第 $i$ 阶段,要么不买第 $i$ 台主机及其游戏,此时 $f1[i]=f[i-1] [j]$。要么购买第i台主机及其若干款游戏,那么此时 $f1[i] [j] =f1 [i] [j-p[i]]$。

话不多说,上代码。

#include <bits/stdc++.h>
using namespace std;
int p[60],x[60],pp[60][20],v[60][20],f[105][100001],f1[105][100001];
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>p[i]>>x[i];
        for(int j=1;j<=x[i];j++)
        {
            cin>>pp[i][j]>>v[i][j];
        }
    }
    memset(f,0xcf,sizeof(f));
    memset(f,0xcf,sizeof(f));
    f1[0][0]=0;
    for(int i=1;i<=n;i++)
    {
        for(int k=0;k<=m;k++)
        {
            f[i][k]=f1[i-1][k];
        }
        for(int j=1;j<=x[i];j++)
        {
            for(int k=m;k>=0;k--)
            {
                if(k>=pp[i][j])
                {
                    f[i][k]=max(f[i][k],f[i][k-pp[i][j]]+v[i][j]);
                }
            }
        }
        for(int k=0;k<=m;k++)
        {
            f1[i][k]=f1[i-1][k];
            if(k>=p[i])
            {
                f1[i][k]=max(f1[i][k],f[i][k-p[i]]);
            }
        }
    }
    int ans=-1e9;
    for(int i=0;i<=m;i++)
    {
        ans=max(ans,f1[n][i]);
    }
    cout<<ans<<endl;
    return 0;
}

标签:f1,pp,游戏,USACO09DEC,luogu,Troubles,60,int,主机
From: https://www.cnblogs.com/2011xsy0226xsy/p/18004208

相关文章

  • Luogu P1104 生日
    link生日题目描述cjf君想调查学校OI组每个同学的生日,并按照年龄从大到小的顺序排序。但cjf君最近作业很多,没有时间,所以请你帮她排序。输入格式输入共有\(n+1\)行,第\(1\)行为OI组总人数\(n\);第\(2\)行至第\(n+1\)行分别是每人的姓名\(s\)、出生年\(y\)......
  • Luogu P1923 求第 k 小的数
    link求第k小的数题目描述输入\(n\)(\(1\len<5000000\)且\(n\)为奇数)个数字\(a_i\)(\(1\lea_i<{10}^9\)),输出这些数字的第\(k\)小的数。最小的数是第\(0\)小。请尽量不要使用nth_element来写本题,因为本题的重点在于练习分治算法。输入格式无输出格式无......
  • Troubleshooting issues occurred
    1. SomethingwentwrongScenario:SomethingwentwrongUnabletoloadthedatamodelforyourPowerBIreport.Pleasetryagainlaterorcontactsupport.Ifyoucontactsupport,pleaseprovidethesedetails.undefined:RequestID:1a7a0365-732e-81df-1b86-......
  • Luogu P1249 最大乘积
    最大乘积题目描述一个正整数一般可以分为几个互不相同的自然数的和,如\(3=1+2\),\(4=1+3\),\(5=1+4=2+3\),\(6=1+5=2+4\)。现在你的任务是将指定的正整数\(n\)分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。输入格式只一个正整数\(n\),(\(3\leqn\leq10000\))。......
  • Luogu P1518 [USACO2.4] 两只塔姆沃斯牛
    [USACO2.4]两只塔姆沃斯牛TheTamworthTwo\(\color{cyan}link\)题目描述两只牛逃跑到了森林里。FarmerJohn开始用他的专家技术追捕这两头牛。你的任务是模拟他们的行为(牛和John)。追击在\(10\times10\)的平面网格内进行。一个格子可以是:一个障碍物,两头牛(它们总在一......
  • Luogu P4924 [1007] 魔法少女小Scarlet
    [1007]魔法少女小Scarlet\(\color{cyan}link\)题目描述Scarlet最近学会了一个数组魔法,她会在\(n\timesn\)二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转\(90^\circ\)。首先,Scarlet会把\(1\)到\(n^2\)的正整数按照从左往右,从上至下的顺序填入初始的二维数组......
  • Luogu P1563 [NOIP2016 提高组] 玩具谜题
    [NOIP2016提高组]玩具谜题\(link\)题目背景NOIP2016提高组D1T1题目描述小南有一套可爱的玩具小人,它们各有不同的职业。有一天,这些玩具小人把小南的眼镜藏了起来。小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。如下图:这时singer告诉小南一个谜题:“......
  • Luogu P1042 [NOIP2003 普及组] 乒乓球
    [NOIP2003普及组]乒乓球\(link\)题目背景国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中\(11\)分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。华华就是其中一位,他退役之后走上了乒乓球研究工作,意图......
  • 玩玩luogu算法题——第1期
    昨天已经把所有大作业写完了,所以今天就想去做一些有趣的事情...今天做的题都不是特别难,除了最后一题(写了大概1000多行Markdown,结果能Accepted的代码居然只有十几行?!)目标:希望暑假的时候每天都能更新一点算法题的随笔出来,加油~P1000超级玛丽游戏(一个非常入门的题目,作用是用来快速......
  • [Luogu] P1058 [NOIP2008 普及组] 立体图
    P1058[NOIP2008普及组]立体图模拟赛时候要是做出来这题就能拿饮料了:(题目传送门思路先打个输出长方体的函数:(其中\((x,y)\)表示该长方体的左上角)voiddraw(intx,inty){c[x][y+2]='+';c[x][y+6]='+';c[x+2][y]='+';c[x+2][y+4]='+';c[x+5][y]='+';c[x+5]......