AT_arc062_b [ABC046D] AtCoDeerくんと変なじゃんけん
题目描述
シカ的 AtCoDeer 君正在和朋友 TopCoDeer 君进行一场游戏。这场游戏共进行 $N$ 回合。在每一回合中,每位玩家都可以出“石头”或“布”。不过,每位玩家必须满足以下条件:
(※)在每一回合结束后,(到目前为止出过的“布”的次数)$\leq$(到目前为止出过的“石头”的次数)。
在这场游戏中,每位玩家的得分为(获胜回合数)$-$(失败回合数)。AtCoDeer 君拥有特殊能力,在游戏开始前就已经知道了 TopCoDeer 君在 $N$ 回合中每一回合要出的手。请你为 AtCoDeer 君决定每一回合要出的手,使得 AtCoDeer 君的得分最大化。TopCoDeer 君每一回合要出的手的信息以字符串 $s$ 给出。$s$ 的第 $i$ 个字符($1 \leq i \leq N$)为 `g` 时表示第 $i$ 回合 TopCoDeer 君出“石头”,为 `p` 时表示出“布”。
输入格式
输入为以下格式,从标准输入读入。
> $s$
输出格式
请输出 AtCoDeer 君能够获得的最大得分。
说明/提示
## 限制条件
- $1 \leq N \leq 10^5$
- $N = |s|$
- $s$ 的每个字符都是 `g` 或 `p`
- $s$ 所表示的出手顺序满足条件(※)
## 样例解释 1
每一回合都和对手出相同的手,可以得到 $0$ 分,这就是最大值。
## 样例解释 2
例如依次出“石头”、“布”、“石头”、“布”、“石头”、“石头”、“布”、“布”、“石头”、“布”,可以赢 $3$ 次,输 $1$ 次,所以得分为 $2$,这是最大值。
由 ChatGPT 4.1 翻译