ACGU

시간 제한2초메모리 제한128 MB

요약
RLE로 인코딩된 RNA 유사 문자열에서 C-G 쌍을 최대 K개까지 허용하며 교차하지 않는 A-U, C-G 쌍의 최대 개수를 구하는 문제입니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 문자열, 조합론
정답자
아직 제출이 없습니다

문제

AA, CC, GG, UU로 이루어진 문자열 SS가 주어진다. 아래 규칙을 지키면서 문자들끼리 짝을 지을 수 있으며, 지을 수 있는 짝의 최대 개수를 구하려고 한다.

짝은 다음 조건을 모두 만족해야 한다.

  1. AA는 UU와 짝을 지을 수 있다.
  2. CC는 GG와 짝을 지을 수 있다.
  3. 각 문자는 최대 한 개의 문자와만 짝을 지을 수 있다.
  4. w<xw < x, y<zy < z, w<yw < y이고 ww번째 문자가 xx번째 문자와, yy번째 문자가 zz번째 문자와 짝을 지었다고 하자. 이때 y>xy > x 또는 z<xz < x 중 적어도 하나가 참이어야 한다. 즉, 어떤 두 짝도 서로 교차해서는 안 된다.
  5. CC-GG 짝은 최대 KK개까지만 지을 수 있다.

문자열 SS는 RLE(런 길이 부호화) 형태로 주어진다. RLE는 같은 문자가 연속으로 나오는 구간을 그 문자와 반복 횟수로 나타낸다. 예를 들어 AAAACCGAAUUG는 A4C2G1A2U2G1로 부호화된다. 즉 입력은 c1f1c2f2…cnfnc_1 f_1 c_2 f_2 \ldots c_n f_n 형태이며, 각 cic_i는 A,C,G,UA, C, G, U 중 하나이고 각 fif_i는 양의 정수이다.

부호화된 문자열은 다음 네 조건을 모두 만족한다.

  • f1+f2+⋯+fn≤10050f_1 + f_2 + \cdots + f_n \le 10050
  • f1≤5000f_1 \le 5000
  • fn≤5000f_n \le 5000
  • f2+f3+⋯+fn−1≤50f_2 + f_3 + \cdots + f_{n-1} \le 50

지을 수 있는 짝의 최대 개수를 구하여라.

입력

첫째 줄에 테스트 케이스의 개수 TT (T≤200T \le 200)가 주어진다. 각 테스트 케이스는 두 줄로 주어진다. 첫째 줄에는 RLE 형태의 문자열 SS가, 둘째 줄에는 정수 KK (0≤K≤200 \le K \le 20)가 주어진다.

출력

각 테스트 케이스에 대해 Case i: p 형식으로 한 줄씩 출력한다. 여기서 ii는 테스트 케이스 번호(1부터 시작)이고 pp는 지을 수 있는 짝의 최대 개수이다.

힌트

첫 번째 예제의 경우, 6개의 짝을 만들 수 있다.

예제1

  1. 예제 1

    입력
    3
    A3C1G1C1U4A2U1
    1
    A3C1G1C1U4A2U1
    0
    A100U200
    2
    
    예상 출력
    Case 1: 6
    Case 2: 5
    Case 3: 100