AT_joi2019ho_c たのしいたのしいたのしい家庭菜園 (Growing Vegetables is Fun 3)
题目描述
JOI 君凭借多年的家庭园艺经验,在自家院子里新种植了一种名为“ジョイ草”的植物。院子里东西方向依次排列着 $N$ 个花盆,从西侧开始依次编号为 $1$ 到 $N$。共有 $N$ 株ジョイ草,每个花盆里各种植一株。
春天到来时,JOI 君前去查看,发现ジョイ草的叶子出乎意料地呈现出各种颜色。同时,他还注意到ジョイ草的生长并不如预期。JOI 君对此感到疑惑,查阅书籍后得知如下信息:
- ジョイ草共有 $3$ 种类型,分别长有红色、绿色和黄色的叶子。
- 如果相同颜色叶子的ジョイ草靠得太近,会抑制它们的生长。
因此,JOI 君决定重新排列ジョイ草,使得相同颜色叶子的ジョイ草不会相邻。此时,JOI 君只能交换相邻的两株ジョイ草。也就是说,每次操作可以任选一个 $i$($1 \leq i \leq N-1$),将第 $i$ 个花盆和第 $i+1$ 个花盆中的ジョイ草交换。
JOI 君希望用尽可能少的操作次数,使得相同颜色叶子的ジョイ草不再相邻。
给定ジョイ草的数量以及每株ジョイ草叶子的颜色,请编写程序,求出最少需要多少次操作才能实现目标。如果无法实现,请输出 $-1$。
输入格式
输入从标准输入中给出,格式如下:
> $N$ $S$
$S$ 是一个长度为 $N$ 的字符串,第 $i$ 个字符($1 \leq i \leq N$)表示第 $i$ 个花盆中ジョイ草的叶子颜色,红色为 `R`,绿色为 `G`,黄色为 `Y`。
输出格式
输出一个整数,表示最少需要的操作次数。如果无法实现目标,则输出 $-1$。
说明/提示
### 限制条件
- $1 \leq N \leq 400$。
- $S$ 是长度为 $N$ 的字符串。
- $S$ 的每个字符都是 `R`、`G` 或 `Y` 之一。
### 子任务
1. (5 分)$N \leq 15$。
2. (55 分)$N \leq 60$。
3. (15 分)$S$ 的每个字符都是 `R` 或 `G` 之一。
4. (25 分)无额外限制。
# 样例说明 1
在本输入样例中,可以如下操作,使得相同颜色的ジョイ草不再相邻:
- 首先,将第 $3$ 个花盆和第 $4$ 个花盆中的ジョイ草交换。
- 然后,将第 $2$ 个花盆和第 $3$ 个花盆中的ジョイ草交换。
这样,ジョイ草的排列变为 `RYRGY`。无法通过 $1$ 次或更少的操作实现目标,因此输出 $2$。
# 样例说明 2
在本输入样例中,无论如何操作,都无法使得相同颜色的ジョイ草不再相邻。
由 ChatGPT 4.1 翻译