AT_joi2024_yo2_c.白色光 2 (White Light 2)
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有 N 个灯依次排列成一行,从左到右依次编号为 1 到 N。每个灯的颜色可以是红色、绿色或蓝色。灯的颜色由字符串 S 表示,第 i 个灯的颜色由 S 的第 i 个字符确定,若该字符为 R,则是红色,若为 G,则为绿色,若为 B,则为蓝色。最开始所有的灯都是亮着的。
JOI 君可以只要还有至少一个灯是亮着的,就可以按照任意顺序,任意次进行以下三种操作。也可以一次操作都不进行。
- 支付 A 日元,将当前所有点亮的灯中最左边的一个熄灭。
- 支付 B 日元,将当前所有点亮的灯中最右边的一个熄灭。
- 支付 C 日元,选择一个任意亮着的灯,将其点亮成任意一种颜色。
JOI 君希望远看这排灯时能呈现出漂亮的白色,因此需要保证亮着的灯颜色从左到右依次为 RGBRGB...RGB,即严格的 RGB (红绿蓝)循环。不存在亮着的灯时,也认为达成了 RGB 循环。像 GBRGBR 或 RGBRG 这样的排列不满足条件。
现给出灯的初始状态和操作所需的金额,请你编写程序,计算使亮着的灯的颜色排列变为 RGB 循环所需要的最小总花费。
输入格式
输入格式如下:
N S A B C
输出格式
输出使亮着的灯的颜色排列变为 RGB 循环所需的最小总花费,不带单位(日元),输出一行。
输入输出样例
输入#1
6 GRBBRG 3 4 5
输出#1
16
输入#2
3 BRG 1000000000 1000000000 1
输出#2
3
输入#3
3 GRB 9 11 14
输出#3
27
输入#4
9 RGBRGBRGB 1000000000 1000000000 1
输出#4
0
输入#5
20 BRGBRGBBGBBBGRRBBBRB 1000000000 1000000000 1
输出#5
2000000008
输入#6
23 BBGRGBBBBBBGRRGGGGBGGGG 786820955 792349124 710671229
输出#6
10107224827
说明/提示
小子任务
1.(4 分)N=3。
2.(22 分)N≤300。
3.(19 分)N≤10000。
4.(9 分)N 是 3 的倍数,A=109,B=109,C=1。
5.(10 分)A=109,B=109,C=1。
6.(36 分)没有额外限制。
样例解释 1
例如如下顺序进行 4 次操作后,点亮的灯颜色排列会成为 RGB 循环。用 - 表示已熄灭的灯。
- 支付 3 日元熄灭最左边的第 1 号灯,状态为
-RBBRG。 - 支付 4 日元熄灭最右边的第 6 号灯,状态为
-RBBR-。 - 支付 4 日元熄灭最右边的第 5 号灯,状态为
-RBB--。 - 支付 5 日元把第 3 号灯变成绿色,状态为
-RGB--。
无法少于 16 日元实现目标,因此输出 16。
这个输入满足小子任务 2,3,6 的约束。
样例解释 2
如下进行 3 次操作后,点亮的灯颜色排列会成为 RGB 循环(-为熄灭):
- 支付 1 日元把第 2 号灯变为绿色,状态为
BGG。 - 支付 1 日元把第 3 号灯变为蓝色,状态为
BGB。 - 支付 1 日元把第 1 号灯变为红色,状态为
RGB。
无法少于 3 日元实现,因此输出 3。
满足小子任务 1,2,3,4,5,6 的约束。
样例解释 3
如下操作 3 次,点亮的灯颜色排列会变为 RGB 循环(-表示熄灭):
- 支付 9 日元熄灭最左边的第 1 号灯,状态为
-RB。 - 支付 9 日元熄灭最左边的第 2 号灯,状态为
--B。 - 支付 9 日元熄灭最左边的第 3 号灯,状态为
---。
无法少于 27 日元实现,因此输出 27。注意,当没有任何灯亮着时也认为满足条件。
该输入满足小子任务 1,2,3,6。
样例解释 4
当前排列已经是 RGB 的循环,因此输出 0。
输入满足小子任务 2,3,4,5,6。
样例解释 5
输入满足小子任务 2,3,5,6。
样例解释 6
输入满足小子任务 2,3,6。
数据范围
- 1≤N≤200000。
- S 是长度为 N 的字符串。
- S 的每个字符是
R、G或B。 - 1≤A≤109。
- 1≤B≤109。
- 1≤C≤109。
- N,A,B,C 均为整数。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?