AT_joi2019ho_c.たのしいたのしいたのしい家庭菜園 (Growing Vegetables is Fun 3)
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
JOI 君凭借多年的家庭园艺经验,在自家院子里新种植了一种名为“ジョイ草”的植物。院子里东西方向依次排列着 N 个花盆,从西侧开始依次编号为 1 到 N。共有 N 株ジョイ草,每个花盆里各种植一株。
春天到来时,JOI 君前去查看,发现ジョイ草的叶子出乎意料地呈现出各种颜色。同时,他还注意到ジョイ草的生长并不如预期。JOI 君对此感到疑惑,查阅书籍后得知如下信息:
- ジョイ草共有 3 种类型,分别长有红色、绿色和黄色的叶子。
- 如果相同颜色叶子的ジョイ草靠得太近,会抑制它们的生长。
因此,JOI 君决定重新排列ジョイ草,使得相同颜色叶子的ジョイ草不会相邻。此时,JOI 君只能交换相邻的两株ジョイ草。也就是说,每次操作可以任选一个 i(1≤i≤N−1),将第 i 个花盆和第 i+1 个花盆中的ジョイ草交换。
JOI 君希望用尽可能少的操作次数,使得相同颜色叶子的ジョイ草不再相邻。
给定ジョイ草的数量以及每株ジョイ草叶子的颜色,请编写程序,求出最少需要多少次操作才能实现目标。如果无法实现,请输出 −1。
输入格式
输入从标准输入中给出,格式如下:
N S
S 是一个长度为 N 的字符串,第 i 个字符(1≤i≤N)表示第 i 个花盆中ジョイ草的叶子颜色,红色为 R,绿色为 G,黄色为 Y。
输出格式
输出一个整数,表示最少需要的操作次数。如果无法实现目标,则输出 −1。
输入输出样例
输入#1
5 RRGYY
输出#1
2
输入#2
6 RRRRRG
输出#2
-1
输入#3
20 YYGYYYGGGGRGYYGRGRYG
输出#3
8
说明/提示
限制条件
- 1≤N≤400。
- S 是长度为 N 的字符串。
- S 的每个字符都是
R、G或Y之一。
子任务
- (5 分)N≤15。
- (55 分)N≤60。
- (15 分)S 的每个字符都是
R或G之一。 - (25 分)无额外限制。
样例说明 1
在本输入样例中,可以如下操作,使得相同颜色的ジョイ草不再相邻:
- 首先,将第 3 个花盆和第 4 个花盆中的ジョイ草交换。
- 然后,将第 2 个花盆和第 3 个花盆中的ジョイ草交换。
这样,ジョイ草的排列变为RYRGY。无法通过 1 次或更少的操作实现目标,因此输出 2。
样例说明 2
在本输入样例中,无论如何操作,都无法使得相同颜色的ジョイ草不再相邻。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?