페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#6326
서브태스크

백열등 2 1s 1024MB

문제

N 개의 전등이 가로 일렬로 늘어서 있으며 왼쪽부터 순서대로 1 에서 N 까지의 번호가 매겨져 있다.

각 조명의 색상은 빨간색, 녹색 또는 파란색 중 하나다.

전등들의 색은 문자열 S로 표시되고, i ( 1≤i≤N ) 번째 전등의 색은 Si번째 문자가 R이면 빨강, G이면 녹색, B이면 청색이며, 처음에는 모든 전등이 켜져있다.

켜져있는 전등이 한 개 이상 있으면, 아래 세 종류의 조작을 좋아하는 순서로 좋아하는 횟수 실시할 수 있다 (조작을 한 번도 하지 않아도 상관 없다).

  • A 원을 지불하고 켜진 전등 중에서 가장 왼쪽에 있는 것을 끈다.

  • B 원을 지불하고 켜진 전등 중에서 가장 오른쪽에 있는 것을 끈다.

  • C 원을 지불하고 켜진 전등을 한 개 선택해, 좋아하는 색으로 다시 켠다.

멀리서 이 빛의 줄을 볼 때 깨끗한 흰색으로 보이게 하고 싶다.

이를 위해서는 켜져있는 빛을 왼쪽에서 보았을 때의 색의 배열이 RGBRGB...RGB(RGB적녹청)의 반복이 되어 있을 필요가 있다.

다만, 하나도 켜진 전등이 존재하지 않는 경우 RGB의 반복이라고 생각한다.

GBRGBR 및 RGBRG와 같은 색상의 배열은 조건을 충족시키지 않는다.

초기 전등의 상태와 조작에 필요한 금액의 정보가 주어졌을 때,
전등의 색 배열을 RGB반복으로 하는데 필요한 금액의 최솟값을 구하는 프로그램을 작성하시오.


입력

입력은 다음과 같은 형식으로 주어진다.

N

S

A\ B\ C

  • 1 \le N \le 200\ 000

  • S는 길이 N의 문자열로 세 개의 문자 R, G, B로만 이루어져 있다.

  • 1 \le A,B,C \le 10^9

  • N,A,B,C는 정수다.


출력

켜진 전등 색의 배열을 RGB반복으로 하기 위해서 필요한 금액의 최솟값을 출력한다.


부분문제

번호 점수 조건
#14점

N=3

#222점

N \le 300

#319점

N \le 10\ 000

#49점

N3의 배수, A=B=10^9,\ C=1

#510점

A=B=10^9,\ C=1

#636점

추가 제한 없음


예제 #1

6
GRBBRG
3 4 5
16

꺼진 조명을 -로 나태내보자.

  1. 3원을 지불해 -RBBRG로 바꾼다.

  2. 4원을 지불해 -RBBR-로 바꾼다.

  3. 4원을 지불해 -RBB--로 바꾼다.

  4. 5원을 지불해 -RGB--로 바꾼다.


예제 #2

3
BRG
1000000000 1000000000 1
3
  1. 1원을 지불, BGG

  2. 1원을 지불, BGB

  3. 1원을 지불, RGB


예제 #3

3
GRB
9 11 14
27
  1. 9원을 지불, -RB

  2. 9원을 지불, --B

  3. 9원을 지불, ---


예제 #4

9
RGBRGBRGB
1000000000 1000000000 1
0

예제 #5

20
BRGBRGBBGBBBGRRBBBRB
1000000000 1000000000 1
2000000008

예제 #6

23
BBGRGBBBBBBGRRGGGGBGGGG
786820955 792349124 710671229
10107224827


출처

JOI 2024 예선2

로그인해야 코드를 작성할 수 있어요.