问题 5477 --01串(ab)

5477: 01串(ab)

时间限制: 2 Sec  内存限制: 512 MB
提交: 3  解决: 2
[提交][状态][命题人:]

题目描述

小 L 最近在研究 01 串,一个长度为 n 的 01 串,每一位都是 0 或 1 。

现在你可以将串划分成不重不漏的 m 个子段,并可以将这些子段任意重新排列,得到一个新的 01 串。

现在定义一个 01 串的收益是他的最长不降子序列,你需要求出所有划分并重排的方案中,收益最大的串的收益。

但是小 L 还没有想清楚到底要划分多少段,所以你需要对于每个 m∈[1,n] 求出对应答案。

输入

第一行一个正整数 n 。

第二行一个长度为 n 的 01 串,保证每一位都是 0 或 1 。

输出

输出一行 n 个正整数,第 i 个数表示 m=i 时的最大收益。相邻两个数之间用一个空格隔开。

样例输入
Copy
样例1:
10
0010110001

样例2:
20
10100010101010100111
样例输出
Copy
样例1:
7 8 9 9 10 10 10 10 10 10

样例2:
13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 20 20 20 20 20

提示

数据规模
对于 100% 的数据,保证 n≤3×10^5 。

- subtask1(5 分): n≤20 。
- subtask2(15 分):n≤200 。
- subtask3(25 分):n≤2000 。
- subtask4(55 分):无特殊限制。

来源

[提交][状态]