CF2087C.Coin Game

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有一些硬币排成一行,从左到右编号为 11。这些硬币有三种类型:金币、银币和铜币。

有两名玩家进行游戏,轮流操作,第一个玩家先手。每一回合,玩家选择三种硬币中的一种,然后收集所有该类型且尚未被另一名玩家拿走的硬币。游戏持续到所有硬币都被收集完为止。两名玩家都采取最优策略,并且都希望自己获得的硬币数量最大。

你的任务是回答 qq 个独立的询问:如果只使用编号从 ll 到 rr 的硬币进行游戏,第一个玩家最多能收集多少枚硬币。

输入格式

第一行包含一个字符串 ss(1≤∣s∣≤1051 \le |s| \le 10^5),由字符 G、S 和/或 B 组成。G 表示金币,S 表示银币,B 表示铜币。

第二行包含一个整数 qq(1≤q≤1051 \le q \le 10^5),表示询问的数量。

接下来 qq 行,每行包含两个整数 ll 和 rr(1≤l≤r≤∣s∣1 \le l \le r \le |s|)。

输出格式

对于每个询问,输出一个整数,表示如果只用编号从 ll 到 rr 的硬币进行游戏,第一个玩家最多能收集多少枚硬币。

输入输出样例

  • 输入#1

    BGSSBGB
    5
    1 7
    2 6
    1 5
    3 3
    4 7

    输出#1

    5
    3
    3
    1
    3

说明/提示

我们来看示例中的几个询问:

  • 第一个询问,所有硬币都参与游戏。最优策略如下:第一个玩家先拿走所有铜币,第二个玩家拿走所有金币,最后第一个玩家拿走所有银币。这样第一个玩家能收集 55 枚硬币;
  • 第二个询问,参与游戏的是第 22 到第 66 枚硬币。最优策略如下:第一个玩家先拿走所有银币,第二个玩家拿走所有金币,最后第一个玩家拿走所有铜币。这样第一个玩家能收集 33 枚硬币;
  • 第三个询问,参与游戏的是第 11 到第 55 枚硬币。最优策略如下:第一个玩家先拿走所有银币,第二个玩家拿走所有铜币,最后第一个玩家拿走所有金币。这样第一个玩家能收集 33 枚硬币;
  • 第四个询问,只有第 33 枚硬币参与游戏。第一个玩家可以直接拿走它,游戏结束。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页