QOJ.ac

QOJ

Límite de tiempo: 1.0 s Límite de memoria: 256 MB Puntuación total: 100 Hackeable ✓

#17736. 배열 게리맨더링

Estadísticas

Busy Beaver는 대통령 선거에 출마하기로 했습니다. 불행히도 유일한 경쟁자인 Lazy Lemur가 너무 강력하여, Busy Beaver는 정상적인 방법으로는 승리할 수 없습니다. 따라서 그는 모든 유능한 정치인이 그렇듯, 게리맨더링을 통해 선거를 조작하기로 했습니다!

Busy Beaver의 나라는 일렬로 나열된 $1$부터 $N$까지 번호가 매겨진 $N$개의 도시로 구성되어 있습니다. 각 도시는 Lazy Lemur에게 투표하면 $0$, Busy Beaver에게 투표하면 $1$로 표시됩니다. Busy Beaver는 $N$개의 도시를 $K$개의 비어 있지 않은 연속된 도시 블록(선거구)으로 나눌 수 있습니다. Busy Beaver는 $1$부터 $N$까지의 모든 $K$에 대하여, 자신이 Lazy Lemur보다 엄격하게 더 많은 표를 얻은 선거구의 수를 최대화하고자 합니다.

$K = 1, \dots, N$ 각각에 대해 Busy Beaver가 얻을 수 있는 최대 선거구 수를 구하도록 도와주세요.

입력

각 테스트 케이스는 여러 개의 테스트 케이스를 포함합니다. 첫 번째 줄에는 테스트 케이스의 수 $T$ ($1 \le T \le 10^4$)가 주어집니다. 각 테스트 케이스에 대한 설명은 다음과 같습니다.

각 테스트 케이스의 첫 번째 줄에는 도시의 수를 나타내는 정수 $N$ ($1 \le N \le 10^5$)이 주어집니다.

각 테스트 케이스의 두 번째 줄에는 $0$과 $1$로 이루어진 길이 $N$의 문자열 $s$가 주어집니다. 여기서 $s_i$가 $0$이면 $i$번째 도시에서 Lazy Lemur가 승리했음을 의미하고, $1$이면 $i$번째 도시에서 Busy Beaver가 승리했음을 의미합니다.

모든 테스트 케이스에 대한 $N$의 합은 $10^5$를 넘지 않음이 보장됩니다.

출력

각 테스트 케이스마다 $N$개의 정수를 출력합니다. 여기서 $K$번째 정수는 도시를 $K$개의 비어 있지 않은 연속된 블록으로 나누었을 때 Busy Beaver가 엄격하게 더 많은 표를 얻은 선거구의 최대 개수를 나타냅니다.

서브태스크

  • ($10$점) 모든 테스트 케이스에 대한 $N$의 합은 최대 $100$입니다.
  • ($25$점) 모든 테스트 케이스에 대한 $N$의 합은 최대 $3000$입니다.
  • ($65$점) 모든 테스트 케이스에 대한 $N$의 합은 최대 $10^5$입니다.

예제

입력 1

3
3
000
5
01101
8
11011011

출력 1

0 0 0
1 1 2 2 3
1 2 3 4 4 5 5 6

참고

총 $3$개의 테스트 케이스가 있습니다.

첫 번째 테스트 케이스에서, 모든 도시가 Lazy Lemur에게 투표하므로 Busy Beaver는 어떤 선거구에서도 승리할 수 없습니다.

두 번째 테스트 케이스에는 $5$개의 도시가 있습니다. $K = 3$일 때, Busy Beaver는 도시들을 $[1, 3]$, $[4, 4]$, $[5, 5]$의 부분 배열로 나누어 $2$개의 선거구에서 승리할 수 있습니다. $[1, 3]$에서는 $3$개의 도시 중 $2$개가 그에게 투표했습니다. $[4, 4]$에서는 그곳의 유일한 도시가 그에게 투표하지 않았으므로 패배합니다. $[5, 5]$에서는 그곳의 유일한 도시가 그에게 투표했으므로 승리합니다. Busy Beaver가 $2$개보다 많은 선거구에서 승리할 수 없다는 것은 증명 가능합니다.

부분 배열 $[1, 2]$, $[3, 4]$, $[5, 5]$로 나누면 단 $1$개의 선거구에서만 승리하게 됨에 유의하세요. 특히, $[1, 2]$와 $[3, 4]$ 각각에서 그는 단 하나의 도시에서만 승리하므로, 어느 선거구에서도 엄격한 과반수를 차지하지 못합니다.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.