Codeforces Round 724 (Div. 2)
C
Diluc and Kaeya
Codeforces
1500
原题
← BD →
翻译中…

The tycoon of a winery empire in Mondstadt, unmatched in every possible way. A thinker in the Knights of Favonius with an exotic appearance.

翻译中…

This time, the brothers are dealing with a strange piece of wood marked with their names. This plank of wood can be represented as a string of $n$ characters. Each character is either a 'D' or a 'K'. You want to make some number of cuts (possibly $0$) on this string, partitioning it into several contiguous pieces, each with length at least $1$. Both brothers act with dignity, so they want to split the wood as evenly as possible. They want to know the maximum number of pieces you can split the wood into such that the ratios of the number of occurrences of 'D' to the number of occurrences of 'K' in each chunk are the same.

翻译中…

Kaeya, the curious thinker, is interested in the solution for multiple scenarios. He wants to know the answer for every prefix of the given string. Help him to solve this problem!

翻译中…

For a string we define a ratio as $a:b$ where 'D' appears in it $a$ times, and 'K' appears $b$ times. Note that $a$ or $b$ can equal $0$, but not both. Ratios $a:b$ and $c:d$ are considered equal if and only if $a\cdot d = b\cdot c$.

翻译中…

For example, for the string 'DDD' the ratio will be $3:0$, for 'DKD' — $2:1$, for 'DKK' — $1:2$, and for 'KKKKDD' — $2:4$. Note that the ratios of the latter two strings are equal to each other, but they are not equal to the ratios of the first two strings.

翻译中…

Input

翻译中…

Each test contains multiple test cases. The first line contains the number of test cases $t$ ($1 \le t \le 1000$). Description of the test cases follows.

翻译中…

The first line of each test case contains an integer $n$ ($1 \leq n \leq 5 \cdot 10^5$) — the length of the wood.

翻译中…

The second line of each test case contains a string $s$ of length $n$. Every character of $s$ will be either 'D' or 'K'.

翻译中…

It is guaranteed that the sum of $n$ over all test cases does not exceed $5 \cdot 10^5$.

翻译中…

Output

翻译中…

For each test case, output $n$ space separated integers. The $i$-th of these numbers should equal the answer for the prefix $s_{1},s_{2},\dots,s_{i}$.

翻译中…

Note

翻译中…

For the first test case, there is no way to partition 'D' or 'DDK' into more than one block with equal ratios of numbers of 'D' and 'K', while you can split 'DD' into 'D' and 'D'.

翻译中…

For the second test case, you can split each prefix of length $i$ into $i$ blocks 'D'.

翻译中…

样例

Input #1
5
3
DDK
6
DDDDDD
4
DKDK
1
D
9
DKDKDDDDK
Output #1
1 2 1
1 2 3 4 5 6
1 1 1 2
1
1 1 1 2 1 2 1 1 3
InputCopy OutputCopy
题目信息
题号
1536C
时间限制
2 s
内存限制
256 MB
标签
数据结构
动态规划
哈希
数论

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。