아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

벽돌 분할

시간 제한6초메모리 제한256 MB

요약
런렝스 부호로 주어진 벽돌 행을 흰색과 검은색 비율이 모두 같아지도록 가장 많은 연속 구간으로 나눕니다.
난이도

보통10점 중 6점

유형
그리디, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

흰색(W) 벽돌과 검은색(B) 벽돌이 한 줄로 놓여 있다. 이 줄을 비어 있지 않은 연속된 블록 여러 개로 나누되, 모든 블록에서 흰 벽돌과 검은 벽돌의 비율이 같아야 한다. 블록 개수를 최대로 하는 것이 목표다.

줄 전체를 블록 하나로 두는 분할은 언제나 가능하지만 의미가 없다. 다음 두 분할을 보자.

  • BWWWBB = BW + WWBB (비율 1:1)
  • WWWBBBWWWWWWWWWB = WWWB + BBWWWWWW + WWWB (비율 3:1)

두 분할 모두 블록 개수 기준으로 최적이다.

한 가지 색만 놓인 줄에서는 어떻게 나누어도 모든 블록의 비율이 같으므로, 벽돌을 하나씩 떼어 낸 분할이 최대다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다 (1≤T≤1001 \le T \le 100).

각 테스트 케이스의 첫 줄에는 줄을 나타내는 구간의 개수 nn이 주어진다 (1≤n≤1051 \le n \le 10^5). 이어지는 nn개의 줄에는 정수 kk와 문자 W 또는 B가 하나씩 주어진다 (1≤k≤1091 \le k \le 10^9). 이는 그 색의 벽돌 kk개가 이어서 놓여 있다는 뜻이다. 같은 색이 연속한 구간으로 주어질 수도 있다. 한 테스트 케이스에서 벽돌 개수의 합은 10910^9을 넘지 않고, 모든 테스트 케이스의 nn 합은 10510^5을 넘지 않는다.

출력

각 테스트 케이스마다 만들 수 있는 블록 개수의 최댓값을 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    3
    3
    1 B
    3 W
    2 B
    4
    3 W
    3 B
    9 W
    1 B
    2
    2 W
    3 W
    
    예상 출력
    2
    3
    5
    
  2. 예제 2

    입력
    4
    2
    1 W
    1 B
    2
    2 W
    2 B
    4
    1 W
    1 B
    1 W
    1 B
    2
    1 B
    1 W
    
    예상 출력
    1
    1
    2
    1