CF332A Down the Hatch!

题目描述

众所周知,Berland 的公民非常注重健康,尤其是学生。Berland 的学生非常厉害,他们只喝橙汁! 昨天,学生 Vasya 和他的朋友们举办了一次烧烤,只喝了这种健康饮料。当第一桶果汁喝光后,他们决定玩一个简单的游戏。前来烧烤的 $n$ 个人坐成一圈(因此每个人的编号为 $b_{i}$,从 $0$ 到 $n-1$)。编号为 $0$ 的人开始游戏(这次是 Vasya)。游戏的轮次从 $1$ 开始依次编号。如果第 $j$ 次轮到编号为 $b_{i}$ 的人,则该人按如下规则行动: 1. 他用手肘或点头指向编号为 $(b_{i}+1) \bmod n$ 的人($x\bmod y$ 为 $x$ 除以 $y$ 的余数); 2. 如果 $j \geq 4$ 并且在第 $j-1$、$j-2$ 和 $j-3$ 次,轮到的玩家做出了和当前 $b_{i}$ 相同的动作,那么他可以喝一杯果汁; 3. 游戏继续转到编号为 $(b_{i}+1) \bmod n$ 的下一个人。 在最后一轮中被指向的人不会再行动。 问题是,Vasya 喝太多果汁,已经不记得游戏的目标了。不过,Vasya 有所有参与者动作的完整记录(包括他自己的)。现在他想知道,如果他每一次回合都做出最优选择(其他玩家的动作保持不变),他最多能喝到多少杯果汁。 可以假设在任何情况下,都有足够的果汁供大家饮用。

输入格式

第一行包含一个整数 $n$($4 \leq n \leq 2000$),表示游戏参与者的人数。 第二行描述了实际的游戏过程:该行第 $i$ 个字符为 'a',表示该轮上场的参与者用手肘指向下一个人;为 'b' 则表示用点头指向。游戏总共进行了至少 $1$ 次、最多 $2000$ 次。

输出格式

输出一个整数,表示如果 Vasya 每轮都能最优地选择动作,最多能喝到多少杯果汁。

说明/提示

在所有样例中,Vasya 有两轮行动,分别是第 $1$ 和第 $5$ 轮。在第一个样例中,如果第 $5$ 轮 Vasya 用点头指向下一个人,他就能在这一轮喝到一杯果汁。这样,整个游戏动作序列为 "abbbb"。在第二个样例中,Vasya 无法喝到任何一杯果汁,因为第 $3$ 和第 $4$ 轮的动作不同。 由 ChatGPT 5 翻译