首页 > 其他分享 >A Coin Game S

A Coin Game S

时间:2024-07-30 22:58:58浏览次数:10  
标签:Coin 硬币 ll times Game 价值 取出 include

[USACO09NOV] A Coin Game S

题目背景

原英文题面见链接

题目描述

小 A 和小 B 在玩游戏。

初始时,有 n n n 个硬币被摆成了一行,从左至右第 i i i 个硬币的价值为 c i c_i ci​。

游戏的规则是,两人交替从这堆硬币的左侧连续取出若干硬币,然后将取出的硬币的价值累加至自己获得的累计价值中。若对方上次操作取出了 k k k 个硬币,那么本次自己最多取出 k × 2 k \times 2 k×2 个硬币。当没有硬币可取时,游戏结束。

游戏开始时,由小 A 先动手取硬币,最多取出 2 2 2 个硬币。

请求出当双方都尽可能使自己的累计价值最大的情况下,小 A 能获得的累计价值最大是多少。

输入格式

输入的第一行是一个整数 n n n,代表硬币的个数。

第 2 2 2 到第 ( n + 1 ) (n + 1) (n+1) 行,每行一个整数,第 ( i + 1 ) (i + 1) (i+1) 行的整数代表第 i i i 个硬币的价值 c i c_i ci​。

输出格式

输出一行一个整数,代表小 A 能获得的最大累计价值。

样例 #1

样例输入 #1

5 
1 
3 
1 
7 
2

样例输出 #1

9

提示说明

在这里插入图片描述

输出输出样例 1 1 1 解释

初始时,硬币序列为 { 1 ,   3 ,   1 ,   7 ,   2 } \{1,~3,~1,~7,~2\} {1, 3, 1, 7, 2}。

由小 A 先操作,他取出了一个硬币,硬币序列变为 { 3 ,   1 ,   7 ,   2 } \{3,~1,~7,~2\} {3, 1, 7, 2},小 A 的累计价值为 1 1 1。

再由小 B 操作,由于小 A 上回合取出了 1 1 1 个硬币,所以他本回合可以取出至多 1 × 2 = 2 1 \times 2 = 2 1×2=2 个硬币。他取出了一个硬币,硬币序列变为 { 1 ,   7 ,   2 } \{1,~7,~2\} {1, 7, 2},小 B 的累计价值为 3 3 3。

再由小 A 操作,由于上回合小 B 取出了 1 1 1 个硬币,所以他本回合可以取出至多 1 × 2 = 2 1 \times 2 = 2 1×2=2 个硬币。他取出了两个硬币,硬币序列变为 { 2 } \{2\} {2},小 A 的累计价值为 1 + 1 + 7 = 9 1 + 1 + 7 = 9 1+1+7=9。

再由小 B 操作,由于上回合小 A 取出了 2 2 2 个硬币,所以他本回合可以取出至多 2 × 2 = 4 2 \times 2 = 4 2×2=4 个硬币。但是只剩下了 1 1 1 个硬币,因此他只能取出一个硬币,硬币序列变为空,小 B 的累计价值为 3 + 2 = 5 3 + 2 = 5 3+2=5,游戏结束。

数据范围与约定

对于全部的测试点,保证 5 ≤ n ≤ 2 × 1 0 3 5 \leq n \leq 2 \times 10^3 5≤n≤2×103, 1 ≤ c i ≤ 1 0 5 1 \leq c_i \leq 10^5 1≤ci​≤105。

提示:请注意本题的空间限制为 20 20 20 MiB

代码内容

// #include <iostream>
// #include <iomanip>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//堆/优先队列
// #include <queue>//队列
// #include <map>//映射
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const ll N=2e3+10;
int s[N],dp[N][N];

int main()
{
    ll n;
    cin>>n;
    
    for(ll i=n;i>=1;i--)
        cin>>s[i];
    
    for(ll i=1;i<=n;i++)
        s[i]+=s[i-1];
    
    for(ll i=1;i<=n;i++)
        for(ll j=1,k=2*j-1;j<=n;j++,k=2*j-1)
        {
            dp[i][j]=dp[i][j-1];
            if(k<=i) dp[i][j]=max(dp[i][j],s[i]-dp[i-k][k]);
            if(k+1<=i) dp[i][j]=max(dp[i][j],s[i]-dp[i-k-1][k+1]);
        }
    
    cout<<dp[n][1]<<endl;
    return 0;
}

标签:Coin,硬币,ll,times,Game,价值,取出,include
From: https://blog.csdn.net/2301_80065123/article/details/140764685

相关文章

  • Unity GameObject学习笔记
    GameObject成员变量GameObject静态方法//准备用来克隆的对象//1.直接是场景上的某个对象//2.可以是一个预制体对象publicGameObjectMyobj;#region知识点二GameObject中的静态方法创建自带几何体只要得到了一个GameObject对象我就......
  • CF1906C Cursed Game 题解
    题目大意交互库有一个\(3\times3\)的01矩阵\(a\),每次询问一个\(n\timesn\)的01矩阵\(b\),交互库会返回一个\((n-2)\times(n-2)\)的01矩阵\(c\),满足:\[c_{x,y}=\bigoplus\limits_{1\lei,j\le3}\left(a_{i,j}\operatorname{AND}b_{x+i-1,y+j-1}\right......
  • pygame 文件调用 Pygame 文件时出现 MouduleNotFound 错误
    我遇到的错误如下:ModuleNotFoundError:Nomodulenamed'pygame.rect'我将错误追溯到sprite.py(一个pygame文件),它试图导入文件rect.py。这是我的文件路径:文件路径白色圈出的文件是尝试导入“rect.py”的文件。我能找到的唯一类似文件是用红色圈出的文件“r......
  • 我无法安装 pygame 模块,所以我尝试观看视频,它告诉我这样做。在那个视频中他得到了 pyt
    c:\User\admin>piplistSyntaxError:unexpectedcharacterafterlinecontinuationcharacter我试图获取python模块列表,但出现语法错误出现SyntaxError:unexpectedcharacterafterlinecontinuationcharacter错误是因为你的用户名中包含一个特殊字符......
  • 如何使用 pygbag 和 pygame 使用 pickle 保存数据
    我有一个游戏,我已经使用pygbag移植到浏览器,并且在使用pickle加载数据时工作正常,但它不保存数据,但是当在本地运行(不在浏览器上)时它工作正常,我应该如何使用pickle保存数据或任何其他带有pygbag的保存库?游戏的其余部分工作正常,并且它也加载所有资源。保存代码是-......
  • [AGC056D] Subset Sum Game
    [AGC056D]SubsetSumGame题面翻译一块黑板上写着\(n\)个整数。第\(i\)个整数记作\(a_i\)。保证\(n\)是偶数。此外,给定\(L,R\)。Alice和Bob在玩一个游戏。他们轮流操作,Alice先手。在每一轮中,玩家需要选择一个写在黑板上的数,并擦掉它。游戏会在\(n\)轮后结束。......
  • pygame中对象列表的颜色渐变
    我正在尝试在pygame中重新创建游戏蛇作为介绍,但是我正在努力解决如何在蛇移动时为蛇的每个方块创建渐变。我的其余代码都是有效的。我编写了以下代码:importcolorsysclassSnake:def__init__(self):self.body=[Vector2(5,no_cell/2),Vector2(4,no_cell/2),......
  • pygame 上的切换器
    我尝试在pygame上进行切换,但遇到了一个问题。我的第一次切换工作正常,但接下来不起作用这是代码这是在第一个elif之前这是在之后代码大约有400行和很多图像,如果你需要的话帮助我的代码让我知道。我已经尝试了chatgpt和codeium建议......
  • 盖世计划-0724-B班模拟 C. 游戏 (game)
    首先,Alice先去\(n\)个商店中购买物品。其中第\(i\)个商店售卖编号为\(i\)的物品,且每个物品的售价为\(a_i\)。Alice的总花费不能超过\(k\)。接着,Bob再去另外\(m\)个商店中购买物品。其中第\(i\)个商店售卖编号为\(n+i\)的物品,且每个物品的售价为\(1\)。Bob的......
  • 如何在 Brawl Stars 中使用 game.brawlstarsgame.com 主机和 9339 端口?
    需要使用套接字连接:主机:game.brawlstarsgame.com端口:9339主机可以接受什么参数、以什么形式?我的主要目标是为大量帐户创建一个自动注册器。我理解你想创建一个BrawlStars帐户的自动注册器,并希望利用你提供的game.brawlstarsgame.com主机和9339端口的信息。......