AT_joi2024_yo2_c.白色光 2 (White Light 2)

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

有 NN 个灯依次排列成一行,从左到右依次编号为 11 到 NN。每个灯的颜色可以是红色、绿色或蓝色。灯的颜色由字符串 SS 表示,第 ii 个灯的颜色由 SS 的第 ii 个字符确定,若该字符为 R,则是红色,若为 G,则为绿色,若为 B,则为蓝色。最开始所有的灯都是亮着的。

JOI 君可以只要还有至少一个灯是亮着的,就可以按照任意顺序,任意次进行以下三种操作。也可以一次操作都不进行。

  • 支付 AA 日元,将当前所有点亮的灯中最左边的一个熄灭。
  • 支付 BB 日元,将当前所有点亮的灯中最右边的一个熄灭。
  • 支付 CC 日元,选择一个任意亮着的灯,将其点亮成任意一种颜色。

JOI 君希望远看这排灯时能呈现出漂亮的白色,因此需要保证亮着的灯颜色从左到右依次为 RGBRGB...RGB,即严格的 RGB (红绿蓝)循环。不存在亮着的灯时,也认为达成了 RGB 循环。像 GBRGBR 或 RGBRG 这样的排列不满足条件。

现给出灯的初始状态和操作所需的金额,请你编写程序,计算使亮着的灯的颜色排列变为 RGB 循环所需要的最小总花费。

输入格式

输入格式如下:

NN SS AA BB CC

输出格式

输出使亮着的灯的颜色排列变为 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=3N = 3。
2.(22 分)N≤300N \leq 300。
3.(19 分)N≤10 000N \leq 10\,000。
4.(9 分)NN 是 33 的倍数,A=109A = 10^9,B=109B = 10^9,C=1C = 1。
5.(10 分)A=109A = 10^9,B=109B = 10^9,C=1C = 1。
6.(36 分)没有额外限制。

样例解释 1

例如如下顺序进行 44 次操作后,点亮的灯颜色排列会成为 RGB 循环。用 - 表示已熄灭的灯。

  1. 支付 33 日元熄灭最左边的第 11 号灯,状态为 -RBBRG。
  2. 支付 44 日元熄灭最右边的第 66 号灯,状态为 -RBBR-。
  3. 支付 44 日元熄灭最右边的第 55 号灯,状态为 -RBB--。
  4. 支付 55 日元把第 33 号灯变成绿色,状态为 -RGB--。

无法少于 1616 日元实现目标,因此输出 1616。

这个输入满足小子任务 2,3,62,3,6 的约束。

样例解释 2

如下进行 33 次操作后,点亮的灯颜色排列会成为 RGB 循环(-为熄灭):

  1. 支付 11 日元把第 22 号灯变为绿色,状态为 BGG。
  2. 支付 11 日元把第 33 号灯变为蓝色,状态为 BGB。
  3. 支付 11 日元把第 11 号灯变为红色,状态为 RGB。

无法少于 33 日元实现,因此输出 33。

满足小子任务 1,2,3,4,5,61,2,3,4,5,6 的约束。

样例解释 3

如下操作 33 次,点亮的灯颜色排列会变为 RGB 循环(-表示熄灭):

  1. 支付 99 日元熄灭最左边的第 11 号灯,状态为 -RB。
  2. 支付 99 日元熄灭最左边的第 22 号灯,状态为 --B。
  3. 支付 99 日元熄灭最左边的第 33 号灯,状态为 ---。

无法少于 2727 日元实现,因此输出 2727。注意,当没有任何灯亮着时也认为满足条件。

该输入满足小子任务 1,2,3,61,2,3,6。

样例解释 4

当前排列已经是 RGB 的循环,因此输出 00。

输入满足小子任务 2,3,4,5,62,3,4,5,6。

样例解释 5

输入满足小子任务 2,3,5,62,3,5,6。

样例解释 6

输入满足小子任务 2,3,62,3,6。

数据范围

  • 1≤N≤200 0001 \leq N \leq 200\,000。
  • SS 是长度为 NN 的字符串。
  • SS 的每个字符是 R、G 或 B。
  • 1≤A≤1091 \leq A \leq 10^9。
  • 1≤B≤1091 \leq B \leq 10^9。
  • 1≤C≤1091 \leq C \leq 10^9。
  • N,A,B,CN, A, B, C 均为整数。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页