得字串


提交程序

分数: 100 (部分)
时间限制: 1.0s
内存限制: 256M

作者:
题目类型

我們稱一個字串是「得字串」若它僅由小寫英文字母 d 和 e 組成。

一個得字串「得」的程度為子序列為 de 的個數。

例如:\(dedede\) 得的程度為 \(6\),\(eedde\) 則為 \(2\)。

對於一個字串 \(s\),我們稱 \(s\) 的一個前綴 \(s_1s_2...s_k\) 為「最長單字元前綴」,若它滿足 \(s_1=s_2=\cdots=s_k\) 且 \(s_{k+1}\neq s_k\)。

特別的,若 \(s\) 僅由一種字元組成,則 \(s\) 自己本身即為自己的最長單字元前綴。

得字串有一個特性,從它被創造的那刻起,每秒就會「得化」一次。

當一個得字串得化時,它的最長單字元前綴會「置換」,即若最長單字元前綴由 d 組成,則這些字元會全變成 e,反之則全變 d。

例如 \(ddedeeddee\) 經過 \(3\) 秒的變化:\(ddedeeddee\rightarrow eeedeeddee\rightarrow ddddeeddee\rightarrow eeeeeeddee\)

給定一個長度為 \(n\) 的得字串 \(s\),請求出它從被創造那刻開始,分別過 \(0\) 秒、\(1\) 秒、\(\cdots\)、\(q\) 秒後得的程度是多少。

Input

第一行輸入兩個正整數 \(n,q\)。

\(1\le n\le 2\cdot10^5,0\le q\le 2\cdot10^5\)

第二行輸入一個長度為 \(n\) 的得字串 \(s\)。

\(|s|=n\)

Output

輸出 \(q+1\) 行,第 \(i\) 行輸出一個整數,代表 \(s\) 從被創造那刻開始過 \(i-1\) 秒後得的程度。

Constraints

第 \(1\) 組測資, \(n\le 5000\) 且 \(q=0\)。\((9\text{%})\)

第 \(2\) 組測資, \(q=0\)。\((19\text{%})\)

第 \(3\) 組測資, \(n\le 5000\)。\((31\text{%})\)

第 \(4\) 組測資, 沒有其他限制。\((41\text{%})\)

Sample Input 1
6 5
dedede
Sample Output 1
6
3
7
1
5
0
Sample Input 2
10 3
ddedeeddee
Sample Output 2
18
8
20
4
Notes

你做🉐出來嗎?


评论

目前没有评论。