白色光 2 (White Light 2)

시간 제한1초메모리 제한1024 MB

요약
왼쪽과 오른쪽 끝을 각각 A원, B원에 끄고 색 변경에 C원을 내서, 남은 불빛이 RGBRGB...의 접두사가 되도록 만드는 최소 비용을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 구현, 그리디, 배열
정답자
아직 제출이 없습니다

문제

N 個のライトが横一列に並んでおり,左から順に 1 から N までの番号が付けられている.それぞれのライトの色は赤,緑,青のいずれかである.ライトの色は文字列 S によって表され,ライト i (1 ≦ i ≦ N) の色は,S の i 文字目が R のとき赤,G のとき緑,B のとき青である.最初すべてのライトは点灯している.

JOI 君は点灯しているライトが 1 つ以上ある限り,以下の 3 種類の操作を好きな順番で好きな回数行うことができる.操作を 1 回も行わなくても構わない.

  • A 円を払って点灯しているライトの中で最も左にあるものを消灯する.
  • B 円を払って点灯しているライトの中で最も右にあるものを消灯する.
  • C 円を払って点灯しているライトを 1 つ選び,好きな色へ点灯し直す.

JOI 君は,遠くからこのライトの列を見たときにきれいな白色に見えるようにしたい.そのためには,点灯しているライトを左から見たときの色の並びが RGBRGB...RGB のように RGB(赤緑青)の繰り返しになっている必要がある.ただし,1 つも点灯しているライトが存在しない場合も RGB の繰り返しであるとみなす. GBRGBR や RGBRG などの色の並びは条件を満たさないことに注意せよ.

ライトと操作に必要な金額の情報が与えられたとき,点灯しているライトの色の並びを RGB の繰り返しにするために必要な金額の最小値を求めるプログラムを作成せよ.

입력

入力は以下の形式で与えられる.

N
S
A   B   C

출력

点灯しているライトの色の並びを RGB の繰り返しにするために必要な金額の最小値を,単位 (円) を省いて 1 行で出力せよ.

제한

  • 1 ≦ N ≦ 200 000.
  • S は長さ N の文字列である.
  • S の各文字は R,G,B のいずれかである.
  • 1 ≦ A ≦ 109.
  • 1 ≦ B ≦ 109.
  • 1 ≦ C ≦ 109.
  • N, A, B, C は整数である.

예제6

  1. 예제 1

    입력
    6
    GRBBRG
    3 4 5
    
    예상 출력
    16
    
  2. 예제 2

    입력
    3
    BRG
    1000000000 1000000000 1
    
    예상 출력
    3
    
  3. 예제 3

    입력
    3
    GRB
    9 11 14
    
    예상 출력
    27
    
  4. 예제 4

    입력
    9
    RGBRGBRGB
    1000000000 1000000000 1
    
    예상 출력
    0
    
  5. 예제 5

    입력
    20
    BRGBRGBBGBBBGRRBBBRB
    1000000000 1000000000 1
    
    예상 출력
    2000000008
    
  6. 예제 6

    입력
    23
    BBGRGBBBBBBGRRGGGGBGGGG
    786820955 792349124 710671229
    
    예상 출력
    10107224827